我正在努力做标题解释,但我得到了消息 WinError2:找不到指定的文件' New Text Document.txt' - > ' new_text_document.txt'使用下面的代码段。是的,我的桌面位于驱动器号D上,这假设目标目录名为' directory'。我在名为' New Text Document.txt'的目录中有一个示例文件。我无法弄清楚问题出在哪里。
import os
path = 'D:\Desktop\directory'
filenames = os.listdir(path)
for filename in filenames:
os.rename(filename, filename.replace(' ', '_').lower())
答案 0 :(得分:1)
使用完整的文件命名来进行更安全的操作系统操作:
import os
path = 'D:\\test'
filenames = os.listdir(path)
for filename in filenames:
#print(filename)
os.rename(path+'\\'+ filename,path+'\\'+ filename.replace(' ', '_').lower())
答案 1 :(得分:0)
因为您没有为os.rename函数指定New Text Document.txt所在的目录。你可以在for循环之前添加这一行。
os.chdir(path)
使用原始字符串或完整文件路径,因为您定义路径的方式也会给您一个错误。
path = r'D:\Desktop\directory
'或path = 'D:\\Desktop\\directory'
答案 2 :(得分:0)
使用列表理解的单行:
import os
directory = 'D:\Desktop\directory'
[os.rename(os.path.join(directory, f), os.path.join(directory, f).replace(' ', '_').lower()) for f in os.listdir(directory)]
答案 3 :(得分:0)
如果要通过多个级别的文件夹递归执行此操作,请使用os.walk(directory)的替代方法:
import os
directory = r'D:\Desktop\directory'
# Use underscore? Otherwise defaults to hyphen
is_use_underscore = True
char_to_use = '_' if is_use_underscore else '-'
print("Renaming files now!")
for root, dirs, files in os.walk(directory):
print(f"root: {root}")
print(f"dirs: {dirs}")
print(f"files: {files}")
for current_filename in files:
new_filename = current_filename.replace(' ', char_to_use)
print(f"current filename: {current_filename}")
print(f" new filename: {new_filename}")
os.rename(
os.path.join(root, current_filename),
os.path.join(root, new_filename)
)
print("All done!")