鱼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 | 显示全部楼层
  1. '''
  2. 现在有一个文件夹Filetest,文件夹中有大量的图片
  3. 图片的名称是这样的12345-1.jpg、23456-1.jpg、12345-2.jpg、12345-3.jpg...
  4. 图片的数量很多,格式都是数字串号+横杠+图片编号
  5. 现在需要进行操作:
  6. 1,在Filetest文件夹中建立子文件夹,子文件夹的个数由图片的前面一个数字串号来决定
  7.       例如,上面的图片12345-1.jpg、12345-2.jpg、12345-3.jpg
  8.       这三个需要建立一个文件夹名称为12345的文件夹,依次类推
  9. 2,把所有图片分类放到新建的文件夹中,规律就是按照图片前面的串号来分
  10. '''
  11. import shutil,os
  12. def cpf(foldername):
  13.     fs=os.listdir(foldername)
  14.     print(fs)
  15.     input()
  16.     listpn=[]
  17.     for pn in fs:
  18.         print(pn)
  19.         input()
  20.         tempname=pn[0:5]
  21.         scpath='Filetest/'+pn
  22.         dnpath='Filetest/'+tempname
  23.         print(dnpath)
  24.         input()
  25.         if tempname in listpn:
  26.             shutil.move(scpath,dnpath)
  27.         else:
  28.             listpn.append(tempname)
  29.             os.mkdir(dnpath)
  30.             shutil.move(scpath,dnpath)
  31.     print('All Done!')

  32. 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 | 显示全部楼层
  1. # 文件重命名
  2. import os
  3. import shutil
  4. os.chdir('G:\\图片')
  5. ##Pic_list1 = os.listdir()
  6. ##i = 0
  7. ##j = 97
  8. ##for each in Pic_list1:
  9. ##    if i == 10:
  10. ##        j += 1
  11. ##        i = 0
  12. ##        os.rename(each,'%c_%d.jpg' %(j,i))
  13. ##    else:
  14. ##        i += 1
  15. ##        os.rename(each,'%c_%d.jpg' %(j,i))


  16. ## 创建分类文件夹
  17. Pic_list2 = os.listdir()
  18. dict_1 = {}
  19. x = []
  20. y = []
  21. for each in Pic_list2:
  22.     a,b = map(str,each.split('_'))
  23.     x.append(a)
  24.     y.append(b)
  25. for each in x:
  26.     dict_1[each] = '?'
  27. c = dict.keys(dict_1)
  28. for each in c:
  29.     os.mkdir(each)

  30. ## 移动文件
  31. k = len(Pic_list2)
  32. for i in range(k):
  33.     for each in c:
  34.         if x[i] == each:
  35.             shutil.move(Pic_list2[i],'.\\%c' %each)
  36.             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 | 显示全部楼层
  1. import os
  2. import shutil
  3. #提取每幅图片的前五个
  4. print('本程序仅支持三层图片分类,即磁盘,一级文件夹,二级文件夹')
  5. print('请输入你图片保存的磁盘:(请将磁盘大写)')
  6. user_disc = input()
  7. print('请输入你图片保存的文件夹:')
  8. user_file_1 = input()
  9. print('请输入你图片保存的二层文件夹')
  10. user_file_2 = input()
  11. path = user_disc +':' + '\\' + user_file_1 + '\\' + user_file_2
  12. print(path)
  13. picture_list = os.listdir(path)
  14. print(picture_list)
  15. picture_file_name_list2 = []
  16. picture_file_name_list = []
  17. #提取每幅图片的前缀信息
  18. for each_file in range(len(picture_list)):
  19.     picture = picture_list[each_file]
  20.     picture_name = list(picture)
  21.     picture_file_name = picture_name[0]
  22.     for each_picture_name in range(1, len(picture_name)):
  23.         if picture_name[each_picture_name] == '.' or picture_name[each_picture_name] == '-':
  24.             break
  25.         picture_file_name += picture_name[each_picture_name]
  26.     picture_file_name_list.append(picture_file_name)
  27. print(picture_file_name_list)
  28. for i in picture_file_name_list:
  29.     if not i in picture_file_name_list2:
  30.         picture_file_name_list2.append(i)
  31.         
  32. print(picture_file_name_list2)

  33. file_name = []
  34. for each_i in range(len(picture_file_name_list2)):
  35.     file_name.append(path + '\\' + picture_file_name_list2[each_i])
  36. for each_file_name in range(len(file_name)):
  37.     os.mkdir(file_name[each_file_name])
  38. #图片移动
  39. picture_move = []
  40. for each_move_picture in range(len(picture_list)):
  41.     picture_move.append(path + '\\' + picture_list[each_move_picture])#原始图片位置
  42. print(picture_move)
  43. for each_picture in range(len(picture_file_name_list)):
  44.     if picture_file_name_list[each_picture] in picture_file_name_list2:
  45.         file = path + '\\' + picture_file_name_list[each_picture]
  46.         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这个函数,修改了一下

  1. import os
  2. import shutil

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

  5. for file in os.listdir(path):
  6.     if os.path.isfile(os.path.join(path,file)):
  7.         i = file.split('-')[0]
  8.         file_path =os.path.join(path,file)
  9.         new_path = os.path.join(path,i,file)
  10.         try:
  11.             os.mkdir(i)
  12.         except:
  13.             pass
  14.         finally:
  15.             shutil.move(file_path,new_path)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

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


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

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

使用道具 举报

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

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 11:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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