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)
页: 1 [2] 3
查看完整版本: Python:每日一题 21(答题领鱼币)