随机重命名目录文件时保留原扩展名的修改方案
解决文件名随机化时丢失扩展名的问题
嘿,这问题很容易搞定!你的代码现在只生成了随机的纯文件名,完全没考虑原文件的扩展名——这就是为啥扩展名丢了。咱们只需要两步就能修复它:
- 把原文件名拆成主名称和扩展名两部分
- 把随机生成的新主名称和原扩展名拼在一起
Python 的 os.path.splitext() 函数就是干这个的,它会把文件名分成一个包含主名和扩展名的元组(比如对 document.pdf,会返回 ("document", ".pdf");如果是无扩展名的文件,扩展名部分就是空字符串,也不用担心出错)。
下面是修改后的完整代码,我标出来了改动的核心部分:
from string import ascii_lowercase from random import choice, randint, random import os def randomize_files(dir): for f in os.listdir(dir): path = os.path.join(dir, f) if os.path.isfile(path): # 新增:拆分原文件名的主名和扩展名 name, ext = os.path.splitext(f) # 生成随机主名称,再拼接原扩展名 random_name = ''.join([choice(ascii_lowercase) for _ in range(randint(5, 8))]) newpath = os.path.join(dir, random_name + ext) os.rename(path, newpath) randomize_files("/tmp/tset21")
这样运行之后,每个文件的新文件名都会保留原来的扩展名啦——比如原来的 report.txt 会变成类似 kqzxm.txt,image.png 会变成 plrvsxd.png,完全没问题!
内容的提问来源于stack exchange,提问作者losmee




