我想重命名目录中的多个文件,如果它们以“#”开头,例如:
#222_message_split - > 222_message_split
#013_message_split2 - > 013_message_split2
编辑:我试过了:
for filename in os.listdir(PATH):
if filename.startswith("#"):
os.rename(filename, filename[1:])
edit2:在pstatix的帮助下,我得到了代码,现在也检查子目录中的“#_____”文件。
for root, dirs, files in os.walk(PATH):
for dir in dirs:
if dir.startswith("#"):
org_fp = os.path.join(root, dir)
new_fp = os.path.join(root, dir[1:])
os.rename(org_fp, new_fp)
答案 0 :(得分:1)
虽然你的缩进已经关闭,但你很接近:
原始问题:
for filename in os.listdir(PATH):
if filename.startswith("#"):
org_fp = os.path.join(PATH, filename)
new_fp = os.path.join(PATH, filename[1:])
os.rename(org_fp, new_fp)
即使os.listdir()
是完整路径, PATH
也不会返回完整路径;仅列出基本名称。因此,您必须提供os.rename()
正确运行的完整路径;使用os.path.join()
完成。
评论请求更新:
for root, dirs, files in os.walk(PATH):
for file in files:
if file.startswith("#"):
org_fp = os.path.join(root, file)
new_fp = os.path.join(root, file[1:])
os.rename(org_fp, new_fp)