Python脚本运行后文件名未更改的问题求助
问题排查与修正方案
代码中的核心问题分析
文件路径判断失效
os.path.isfile(filename)中的filename仅为JAN目录下的文件名,并非完整路径。脚本运行在JAN的上级目录,因此该判断始终返回False,导致os.rename从未执行。应使用拼接好的完整路径f(修正后命名为old_path)进行判断。重命名的源文件路径错误
os.rename(filename, new_f)中的filename未包含目录前缀,脚本无法定位到JAN目录内的文件,需替换为完整路径。新文件路径错误
- 原代码中
f'JAN-{num}.txt'.format(num=num)属于冗余写法,f-string已支持直接嵌入变量,无需额外调用format。 - 新文件未指定JAN目录,执行后会被移到脚本所在的上级目录,而非保留在JAN内,需拼接目录路径。
修正后的代码
import os directory = 'JAN' num = 1 for filename in os.listdir(directory): # 拼接源文件完整路径 old_path = os.path.join(directory, filename) # 跳过非文件(如子目录) if not os.path.isfile(old_path): continue # 拼接新文件完整路径,确保文件留在JAN目录内 new_path = os.path.join(directory, f'JAN-{num}.txt') # 执行重命名操作 os.rename(old_path, new_path) print(f"已重命名:{old_path} -> {new_path}") num += 1
修正关键点说明
- 使用完整路径
old_path进行文件判断和重命名,确保脚本能准确定位目标文件。 - 新文件路径
new_path拼接了directory参数,保证重命名后的文件仍留在JAN目录中。 - 增加非文件跳过逻辑,避免遍历到子目录时出现错误。
- 简化f-string写法,去除冗余的
format调用。
内容的提问来源于stack exchange,提问作者Conner Hill
相关产品推荐
相关产品推荐

