Python跨目录重命名文件异常问题求助
Python 指定目录文件重命名问题解决
问题原因
你的代码里os.rename(f, "new_file"+str(count))的第二个参数只传入了新文件名,没有指定目标目录。Python会默认将文件移动到脚本运行的当前工作目录(也就是C:\Users\lenovo\Desktop\app),所以原files目录下的文件会被移走,看起来像是被删除了。另外,代码还会丢失原文件的后缀名(比如.txt),这也是需要修复的问题。
修正后的代码
import os directory = r'C:\Users\lenovo\Desktop\files' count = 0 # 遍历目标目录下的文件,先排序避免顺序混乱 for filename in sorted(os.listdir(directory)): file_path = os.path.join(directory, filename) # 只处理文件,跳过子目录 if os.path.isfile(file_path): count += 1 # 获取原文件的后缀名,保留格式 file_ext = os.path.splitext(filename)[1] # 拼接新的完整路径:目标目录 + 新文件名 + 后缀 new_file_path = os.path.join(directory, f"new_file{count}{file_ext}") # 执行重命名 os.rename(file_path, new_file_path)
额外注意事项
- 排序处理:使用
sorted(os.listdir(directory))可以让文件按名称排序后再重命名,避免os.listdir返回顺序不稳定导致的命名混乱。 - 同名文件检查:如果目标目录下已经存在
new_file1.txt这类文件,os.rename会报错。可以提前判断文件是否存在,比如添加if not os.path.exists(new_file_path):再执行重命名,或者增加编号避免冲突。 - 子目录跳过:代码里的
os.path.isfile确保只处理文件,不会误操作子目录。
内容的提问来源于stack exchange,提问作者FeRcHo
相关产品推荐
相关产品推荐

