使用 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'
我有以下代码,它根据包含 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'