Even_138
发表于 2018-3-29 10:39:51
看看
rikulu
发表于 2018-3-29 10:55:52
学习学习
tsembrace
发表于 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
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')
小强工作室
发表于 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)
s_str4=tup_file_ext.split("-")
print(s_str4)#分割出来文件名,还需要判断和移动
jrro452
发表于 2018-5-5 16:35:40
import os,shutil
from pathlib import Path
PATH = 'G:/其他/Filetest/'
FilePath = Path(PATH)
Filenames=[]
for files in :
filename = files.name
filePname = filename.split('-')
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)
结果:
满足题目要求。
对参数命名真的让我头大···囧
jrro452
发表于 2018-5-5 16:49:59
jrro452 发表于 2018-5-5 16:35
import os,shutil
from pathlib import Path
PATH = 'G:/其他/Filetest/'
看了大家的发现自己的还是不够简洁,学习了。
today0427
发表于 2018-5-7 20:39:18
来学习
萧丹夜
发表于 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 = '?'
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 == each:
shutil.move(Pic_list2,'.\\%c' %each)
break
yanchang135
发表于 2018-5-30 14:19:05
学习一下
天下独我意
发表于 2018-6-14 19:01:52
看看
uilUVUBWP
发表于 2018-8-12 08:45:17
。。。。。
quan-renda
发表于 2018-8-30 17:03:31
import shutil,os
path='F:/Filetest/'
lst=os.listdir(path)
for i in range(len(lst)):
if lst[-3:]=='jpg':
name=lst.split('-')
if os.path.exists(path+name):
shutil.move(path+lst,path+name)
else:
os.mkdir(path+name)
shutil.move(path+lst,path+name)
silent1314
发表于 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
picture_name = list(picture)
picture_file_name = picture_name
for each_picture_name in range(1, len(picture_name)):
if picture_name == '.' or picture_name == '-':
break
picture_file_name += 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)
for each_file_name in range(len(file_name)):
os.mkdir(file_name)
#图片移动
picture_move = []
for each_move_picture in range(len(picture_list)):
picture_move.append(path + '\\' + picture_list)#原始图片位置
print(picture_move)
for each_picture in range(len(picture_file_name_list)):
if picture_file_name_list in picture_file_name_list2:
file = path + '\\' + picture_file_name_list
shutil.move(picture_move, file)
冷焰溶冰
发表于 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("-")
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))
乔一丨JOY
发表于 2018-9-23 17:09:29
学习的第二天
Nyu菌
发表于 2018-10-18 23:26:28
直接看答案2333
吃鱼的虾
发表于 2018-10-21 18:23:35
试试
double-lee
发表于 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('-')
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)
北城以北灬
发表于 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('-')
if not os.path.exists(name):
os.mkdir(name)
shutil.move(file, './' + name)
xxt
发表于 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('-'))
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('-'))
shutil.move(file,nd)