【发布时间】:2022-01-12 20:51:16
【问题描述】:
我有以下代码根据包含 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 自动化无聊的东西的练习,任务是在目录中的文件中按编号顺序创建一个间隙
更新:14/01/2022
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)
【问题讨论】:
-
嗨@Ouroborus,请参阅上面我的更新 14/01/2022。我做了类似于你所说的事情,如果文件与列表中的文件名称相同,则跳过重命名文件,如果名称不同,则重命名文件。我知道它正在跳过文件名相同和不同的地方,即通过打印 X。但我仍然得到文件:spam001.txt、spam002.txt、spam003.txt 和 spam009.txt 留在文件夹中? ?例如,当 spam004.txt != spam005.txt 它打印 X。但我的文件夹目录中没有 spam005.txt
标签: python-3.x list shutil