Python:重命名以“#”开头的多个文件

时间:2018-01-09 15:01:12

标签: python directory subdirectory renaming

我想重命名目录中的多个文件,如果它们以“#”开头,​​例如:

#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)

1 个答案:

答案 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)

请查看docs和此post了解相关信息。