hanaoran1234 发表于 2020-10-4 12:49

文件后缀名修改器

本人学了一上午Python,跑来写了一个程序,分享给大家,共同进步。

测试图:
https://s1.ax1x.com/2020/10/04/08O34g.png
https://s1.ax1x.com/2020/10/04/08OBUU.png
https://s1.ax1x.com/2020/10/04/08Oy8J.png
```python
import os #导入OS模块
path=input("请输入文件夹的绝对路径(如D:\Python):")
str_a=input("请输入要修改的后缀名(如txt):")
str_b=input("请输入要改为的后缀名(如docx):")
files_list=[]
for file in os.scandir(path): #遍历目录下所有文件和文件夹
    if file.is_dir()==False and file.name.endswith('.'+str_a): #不是文件夹且后缀名是要修改的
      files_list.append(file.name) #加入修改列表里
if len(files_list)==0: #没有就退出
    print("修改失败,未找到文件。")
    exit(0)
for i in range(len(files_list)):
    ext=os.path.splitext(path+'\\'+files_list) #分离文件名和后缀名
    os.rename(ext+ext,ext+'.'+str_b) #进行重命名操作
print(f"修改完成,共修改了{len(files_list)}个文件。")
```

孤狼微博 发表于 2020-10-4 13:27

cmdren *.txt *.jpg把当前目录下所有txt的改成jpg

EnterpriseSolu 发表于 2020-10-5 14:13

代码写的有点简陋,功能是做好了,可能还需要加更多的参数和功能验证
1)参数验证 str_a, str_b 要验证输入的参数,可能输入的不是常用的文件扩展名,或是输入的非法的文件扩展名称(要查一个windows的哪些文件名是非法名称,比如/ 或\ 不能是文件名的一部分)
    这两个参数有没有全角/半角的考虑,英文没有这个顾虑,同样的字符,中文环境会导致是不一样的字符
如果1.txt 重命名为1.doc,但是1.doc在硬盘中已经存在,这时候是override,还是ignore,可能要对已经存在的文件做排除或是其它的处理,避免文件丢失

2)功能验证(重命名操作)正在改名的时候,文件被其它程序占用了,怎么处理?提示一下,多数软件不允许改,少数软件提示文件正在被占用,还有软件(windows media player或是暴风影音) 有代码检测文件改名,改名之后会马上用新的文件名播放,不影响播放体验
    有并发的可能,一个文件被两个窗口打开(explorer和FTP等第三方软件,和当前您写的程序),1.txt,在第一个windows explorer中修改为2.txt,但是在另一个软件FTP的目录浏览窗口中,会修改为3.txt, 这时候,您的程序改名可能会失败,取决于这三个程序的运行顺序
   

wzzjnb2006 发表于 2020-10-4 12:58

支持一下!!!

shen12wang 发表于 2020-10-4 12:59

支持椅子一下。哈哈

岁禾星涣 发表于 2020-10-4 13:02

这不是直接右键重命名就行了吗;www

alicc 发表于 2020-10-4 13:17

支持 无后缀名 么?逻辑是一定需要参数嘛

zhjjhz 发表于 2020-10-4 13:34

ren *.txt *.docx{:301_1007:}这样不就好了,直接用doc不更容易?

无名氏wyw 发表于 2020-10-4 13:35

对于文件系统的操作,python远不及cmd来的方便,毕竟是微软儿子
既不赞成也不反对,但目的如果是想要秀秀操作什么的,建议再练练

zhjjhz 发表于 2020-10-4 13:35

岁禾星涣 发表于 2020-10-4 13:02
这不是直接右键重命名就行了吗

如果有几百个文件要重命名的时候你就不会一个一个来了{:301_998:}

zt185 发表于 2020-10-4 13:49

这个比较实用,量大的改名的确很累人,这个方便!
页: [1] 2
查看完整版本: 文件后缀名修改器