鱼C论坛

 找回密码
 立即注册
查看: 2382|回复: 6

[已解决]如何按照文件名的汉字字数筛选并移动文件

[复制链接]
发表于 2022-7-22 09:59:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有几万个文件,但是部分文件文件名过短,只有几个汉字,系统自带的排序只有按照名字、时间、文件大小排序

用python如何实现按照文件名的长短进行排序,将文件名少于6个字的文件移动到指定文件夹啊?
请大神帮个忙吧
最佳答案
2022-7-22 11:06:03
本帖最后由 jackz007 于 2022-7-22 11:37 编辑
sjjy1813 发表于 2022-7-22 10:07
是的啊,所以比较愁人,无论用什么排序,这些短文件名的文件都在各个地方,一个一个拉这查找,太累了, ...

import os
import shutil

def foo(spath , rpath , n):
    e = []
    for file in os . listdir(spath):
        x = os . path . join(spath , file)
        if os . path . isfile(x):
            if len(file . split('.')[0] . strip()) < n:
                shutil . move(x , os . path . join(rpath , file))
            else:    
                e . append(file)
    for i in range(len(e) - 1):
        for j in range(i + 1 , len(e)):
            if len(e[i]) > len(e[j]):
                e[i] , e[j] = e[j] , e[i]
            elif len(e[i]) == len(e[j]) and e[i] . lower() > e[j] . lower():
                e[i] , e[j] = e[j] , e[i]
    return e

with open("filelist.txt" , "wt") as fp:
    for x in foo('D:\\00.temp\\sss' , 'D:\\00.temp\\ttt' , 6):
        fp . write(x + '\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-22 10:04:14 | 显示全部楼层
        这些文件都在同一个文件夹内?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-22 10:07:07 | 显示全部楼层
本帖最后由 sjjy1813 于 2022-7-22 10:08 编辑
jackz007 发表于 2022-7-22 10:04
这些文件都在同一个文件夹内?


是的啊,所以比较愁人,无论用什么排序,这些短文件名的文件都在各个地方,一个一个拉这查找,太累了,废人啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-22 11:06:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-7-22 11:37 编辑
sjjy1813 发表于 2022-7-22 10:07
是的啊,所以比较愁人,无论用什么排序,这些短文件名的文件都在各个地方,一个一个拉这查找,太累了, ...

import os
import shutil

def foo(spath , rpath , n):
    e = []
    for file in os . listdir(spath):
        x = os . path . join(spath , file)
        if os . path . isfile(x):
            if len(file . split('.')[0] . strip()) < n:
                shutil . move(x , os . path . join(rpath , file))
            else:    
                e . append(file)
    for i in range(len(e) - 1):
        for j in range(i + 1 , len(e)):
            if len(e[i]) > len(e[j]):
                e[i] , e[j] = e[j] , e[i]
            elif len(e[i]) == len(e[j]) and e[i] . lower() > e[j] . lower():
                e[i] , e[j] = e[j] , e[i]
    return e

with open("filelist.txt" , "wt") as fp:
    for x in foo('D:\\00.temp\\sss' , 'D:\\00.temp\\ttt' , 6):
        fp . write(x + '\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-22 11:14:52 | 显示全部楼层
sjjy1813 发表于 2022-7-22 10:07
是的啊,所以比较愁人,无论用什么排序,这些短文件名的文件都在各个地方,一个一个拉这查找,太累了, ...

不是可以按名称排序吗....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-22 15:52:16 | 显示全部楼层
青出于蓝 发表于 2022-7-22 11:14
不是可以按名称排序吗....

名称是按首字的字母拍,比如我们的太阳,我们的月亮,我们,我们的星星,这种,排完后,我们这个文件就在中间,如果有很多这样的1、2个字的文件名文件,就排不出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-22 16:02:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 11:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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