使用 Python 重命名同一目录中的文件

Renaming files in same directory with Python

我有以下代码,它根据包含 8 个元素的列表重命名 txt 文件。如果我先将它们移动到不同的目录,我可以成功地重命名这些文件。

但是,当我想将文件移动到同一目录并通过将 withGapsFolder 换成 spamFolder 来重命名时,我没有得到预期的结果。相反,我得到 4 个名为的文件:spam001.txt、spam002.txt、spam003.txt 和 spam009.txt.

FileList中的元素有: ['spam001.txt', 'spam002.txt', 'spam003.txt', 'spam005.txt' , 'spam006.txt', 'spam007.txt', 'spam008.txt', 'spam009.txt']

目录下的文本文件有: ['spam001.txt', 'spam002.txt', 'spam003.txt', 'spam004.txt', 'spam005.txt', 'spam006.txt', 'spam007.txt', 'spam008.txt']

for folderName, subfolders, filenames in os.walk(spamFolder):
for filename in filenames:

    if Counter1 == 8:
        sys.exit()
        
    #print(filename)
    #print(FileList[Counter1])
    shutil.move(os.path.join(spamFolder, filename), os.path.join(withGapsFolder, FileList[Counter1]))

    Counter1 = Counter1 + 1

    print(Counter1)

我想要的是通过循环遍历列表元素来重命名同一文件夹中的 txt 文件。

谢谢

-PS 这是使用 Python 自动化无聊的东西的练习,任务是在目录中的文件中按编号顺序创建一个间隙

更新:2022 年 1 月 14 日

for folderName, subfolders, filenames in os.walk(spamFolder):
    for filename in filenames:
 
        if Counter1 == 8:
            sys.exit()

        print(filename+FileList[Counter1])
              
        if filename == FileList[Counter1]:
            Counter1 = Counter1 + 1
        else:
            #print(filename)
            #print(FileList[Counter1])
            shutil.move(os.path.join(spamFolder, filename), os.path.join(spamFolder, FileList[Counter1]))
            Counter1 = Counter1 + 1
            print('X')

print(Counter1)

我最终找到了一个解决方法,尽管它可能很笨拙。由于将每个文件重命名为以前文件使用的名称可能会导致问题。我决定在文件的前面附加一个 'x',这些文件重命名为与已经存在的文件同名,如下所示:

shutil.move(os.path.join(spamFolder, filename), os.path.join(spamFolder, 'x'+FileList[Counter1]))

然后我简单地使用 os.walk 功能来删除 'x'