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

Python: Rename multiple files starting with a “#”

我想重命名一个目录中的多个文件,如果它们以""开头,例如:

#222_message_split->222_message_split

#013_message_split2->013_message_split2

编辑:我尝试过:

1
2
3
for filename in os.listdir(PATH):
    if filename.startswith("#"):
        os.rename(filename, filename[1:])

edit2:在pstatix的帮助下,我得到了代码,现在也检查了"uuuuuuuu"文件的子目录。

1
2
3
4
5
6
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
2
3
4
5
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)

即使PATH是完整路径,os.listdir()也不会返回完整路径;只列出基名称。因此,您必须为os.rename()提供一个完整的路径,以便正确地运行;使用os.path.join()完成。

请求更新的注释:

1
2
3
4
5
6
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)

查看文档和本文以获取信息。