重命名目录中的文件夹中的所有文件
问题描述:
基本上我已经完成了所有的文件。但是,当实际尝试重命名文件时,出现错误重命名目录中的文件夹中的所有文件
Traceback (most recent call last):
File
"C:\Users\CHOMAN\Desktop\Earthquake_1_combine_3_jan\Earthquake_1_combine\wav\sort_inner_wav.py", line 21, in <module>
os.rename(file, new_name)
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'Audio Track-10.wav' -> 'choman_10.wav'
直到最后一个打印语句的值是正确的。不知道如何重命名它。 在wav文件夹下有32个子文件夹,里面有大约10个.wav文件。
import os
rootdir = r'C:\Users\CHOMAN\Desktop\Earthquake_1_combine_3_jan\Earthquake_1_combine\wav'
for subdir, dirs, files in os.walk(rootdir):
for file in files:
filepath = subdir+os.sep+file
if filepath.endswith('.wav'):
f_name, f_ext=(os.path.splitext(file))
if len(f_name) == 11:
f_name = f_name+'-0'
f_title,f_num =f_name.split('-')
f_num=f_num.zfill(2)
new_name = '{}_{}{}'.format('choman',f_num,f_ext)
print (file, new_name)
os.rename(file, new_name)
答
所有你需要的是:
os.rename(filepath, subdir+os.sep+new_name)
那是因为你需要完整的路径。
+1
当合并路径时,我会推荐'os.path.join':'os.path.join(subdir,new_name)' – user783836
答
如果您没有在'rootdir'的相同位置运行此脚本并且存在子目录,则需要指定源文件和目标文件的绝对路径。否则,该文件将不会被找到。
# python 2.7
os.rename(filepath, os.path.join(subdir, new_name))
# python >= 3.3
os.rename(file, new_name, subdir, subdir)
重命名是否需要完整路径? –
是的,这让我感到困惑。基本上wav下有32个文件夹,每个文件夹中有大约10个.wav文件。我不确定我现在必须给予什么样的道路? – choman