鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 21(答题领鱼币)

[复制链接]
发表于 2018-3-29 10:39:51 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-29 10:55:52 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-10 17:53:49 | 显示全部楼层
'''
现在有一个文件夹Filetest,文件夹中有大量的图片
图片的名称是这样的12345-1.jpg、23456-1.jpg、12345-2.jpg、12345-3.jpg...
图片的数量很多,格式都是数字串号+横杠+图片编号
现在需要进行操作:
1,在Filetest文件夹中建立子文件夹,子文件夹的个数由图片的前面一个数字串号来决定
      例如,上面的图片12345-1.jpg、12345-2.jpg、12345-3.jpg
      这三个需要建立一个文件夹名称为12345的文件夹,依次类推
2,把所有图片分类放到新建的文件夹中,规律就是按照图片前面的串号来分
'''
import shutil,os
def cpf(foldername):
    fs=os.listdir(foldername)
    print(fs)
    input()
    listpn=[]
    for pn in fs:
        print(pn)
        input()
        tempname=pn[0:5]
        scpath='Filetest/'+pn
        dnpath='Filetest/'+tempname
        print(dnpath)
        input()
        if tempname in listpn:
            shutil.move(scpath,dnpath)
        else:
            listpn.append(tempname)
            os.mkdir(dnpath)
            shutil.move(scpath,dnpath)
    print('All Done!')

cpf('Filetest')
 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-3 15:26:34 | 显示全部楼层
import os
for roots,dirs,files in os.walk("E:\Filetext"):
    for i in files:
        tup_file_ext = os.path.splitext(i)[0]
        s_str4=tup_file_ext.split("-")[0]
        print(s_str4)#分割出来文件名,还需要判断和移动
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-5 16:35:40 | 显示全部楼层
import os,shutil
from pathlib import Path
PATH = 'G:/其他/Filetest/'
FilePath = Path(PATH)
Filenames=[]
for files in [x for x in FilePath.iterdir()]:
    filename = files.name
    filePname = filename.split('-')[0]
    FilePLocation = PATH+filename#路径+带后缀的文件名
    FileLocation = PATH+filePname#路径+不带后缀的文件名
    if filePname not in Filenames:
        Filenames.append(filePname)
        os.mkdir(FileLocation)
        shutil.move(FilePLocation ,FileLocation)
    else:
        shutil.move(FilePLocation ,FileLocation)
结果:
满足题目要求。
对参数命名真的让我头大···囧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-5 16:49:59 | 显示全部楼层
jrro452 发表于 2018-5-5 16:35
import os,shutil
from pathlib import Path
PATH = 'G:/其他/Filetest/'

看了大家的发现自己的还是不够简洁,学习了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 20:39:18 | 显示全部楼层
来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 20:54:26 | 显示全部楼层
# 文件重命名
import os
import shutil
os.chdir('G:\\图片')
##Pic_list1 = os.listdir()
##i = 0
##j = 97
##for each in Pic_list1:
##    if i == 10:
##        j += 1
##        i = 0
##        os.rename(each,'%c_%d.jpg' %(j,i))
##    else:
##        i += 1
##        os.rename(each,'%c_%d.jpg' %(j,i))


## 创建分类文件夹
Pic_list2 = os.listdir()
dict_1 = {}
x = []
y = []
for each in Pic_list2:
    a,b = map(str,each.split('_'))
    x.append(a)
    y.append(b)
for each in x:
    dict_1[each] = '?'
c = dict.keys(dict_1)
for each in c:
    os.mkdir(each)

## 移动文件
k = len(Pic_list2)
for i in range(k):
    for each in c:
        if x[i] == each:
            shutil.move(Pic_list2[i],'.\\%c' %each)
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-30 14:19:05 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 19:01:52 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-12 08:45:17 | 显示全部楼层
。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-30 17:03:31 | 显示全部楼层
import shutil,os
path='F:/Filetest/'
lst=os.listdir(path)
for i in range(len(lst)):
    if lst[i][-3:]=='jpg':
        name=lst[i].split('-')
        if os.path.exists(path+name[0]):
            shutil.move(path+lst[i],path+name[0])
        else:
            os.mkdir(path+name[0])
            shutil.move(path+lst[i],path+name[0])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-1 22:21:22 | 显示全部楼层
import os
import shutil
#提取每幅图片的前五个
print('本程序仅支持三层图片分类,即磁盘,一级文件夹,二级文件夹')
print('请输入你图片保存的磁盘:(请将磁盘大写)')
user_disc = input()
print('请输入你图片保存的文件夹:')
user_file_1 = input()
print('请输入你图片保存的二层文件夹')
user_file_2 = input()
path = user_disc +':' + '\\' + user_file_1 + '\\' + user_file_2
print(path)
picture_list = os.listdir(path)
print(picture_list)
picture_file_name_list2 = []
picture_file_name_list = []
#提取每幅图片的前缀信息
for each_file in range(len(picture_list)):
    picture = picture_list[each_file]
    picture_name = list(picture)
    picture_file_name = picture_name[0]
    for each_picture_name in range(1, len(picture_name)):
        if picture_name[each_picture_name] == '.' or picture_name[each_picture_name] == '-':
            break
        picture_file_name += picture_name[each_picture_name]
    picture_file_name_list.append(picture_file_name)
print(picture_file_name_list)
for i in picture_file_name_list:
    if not i in picture_file_name_list2:
        picture_file_name_list2.append(i)
        
print(picture_file_name_list2)

file_name = []
for each_i in range(len(picture_file_name_list2)):
    file_name.append(path + '\\' + picture_file_name_list2[each_i])
for each_file_name in range(len(file_name)):
    os.mkdir(file_name[each_file_name])
#图片移动
picture_move = []
for each_move_picture in range(len(picture_list)):
    picture_move.append(path + '\\' + picture_list[each_move_picture])#原始图片位置
print(picture_move)
for each_picture in range(len(picture_file_name_list)):
    if picture_file_name_list[each_picture] in picture_file_name_list2:
        file = path + '\\' + picture_file_name_list[each_picture]
        shutil.move(picture_move[each_picture], file)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-23 16:28:36 | 显示全部楼层
import os,shutil

get_location = "D:\\python\\test\\FileTest\\"

for i in os.listdir(get_location):
    str_first = i.split("-")[0]
    if os.path.exists(get_location + str_first):
        print("already exist")
    else:
        os.makedirs(get_location + str_first)
    shutil.move((get_location + i),(get_location + str_first))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-23 17:09:29 | 显示全部楼层
学习的第二天
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-18 23:26:28 | 显示全部楼层
直接看答案2333
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 18:23:35 | 显示全部楼层
试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-7 10:42:36 | 显示全部楼层
本帖最后由 double-lee 于 2018-12-7 11:04 编辑

忘了有os.listdir这个函数,修改了一下
import os
import shutil

path = 'D:/Test/pic22'
os.chdir(path)

for file in os.listdir(path):
    if os.path.isfile(os.path.join(path,file)): 
        i = file.split('-')[0]
        file_path =os.path.join(path,file)
        new_path = os.path.join(path,i,file)
        try:
            os.mkdir(i)
        except:
            pass
        finally:
            shutil.move(file_path,new_path)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-6 09:06:21 | 显示全部楼层
import os
import shutil


def make_file():
    for n in range(12345, 12348):
        for i in range(1, 4):
            file_name = ("%d-%d.jpg" % (n, i))
            with open(file_name, "w") as f:
                pass

# # 创建一个文件夹
# os.mkdir("Filetest")


os.chdir("Filetest")
print(os.getcwd())
# 创建测试用的文件
# make_file()

arr = os.listdir()
for file in arr:
    if os.path.isfile(file):
        name = file.split('-')[0]
        if not os.path.exists(name):
            os.mkdir(name)
        shutil.move(file, './' + name)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-7 21:34:03 | 显示全部楼层
本帖最后由 xxt 于 2019-3-7 21:49 编辑
import os
import shutil

os.chdir(r'D:\Program Files\Python\Python37-32\example\every day\Filetest\\')#进入Filetest目录下
file_name=[]
dir_now='D:\Program Files\Python\Python37-32\example\every day\Filetest'
files = os.listdir('.')#罗列所有文件名
for name in files: #取得文件夹名
    file_name.append(name.split('-')[0])
dir1 = list(set(file_name))
for i in dir1:#创建文件夹
    os.mkdir(os.path.join(dir_now,i))
for file in files:#将文件装入文件夹

    nd=os.path.join(dir_now,file.split('-')[0])
            
    shutil.move(file,nd)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 20:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表