【发布时间】:2014-04-07 14:48:43
【问题描述】:
我写了一个小程序来重命名python中的一大堆文件
#!/usr/local/bin/python3
import os
import glob
import sys
script, arg1 = sys.argv
f = open(arg1)
# Create a filelist using glob
filelist = glob.glob('*.avi')
filelist.sort()
for filename in filelist:
print(filename)
# To keep the file ending
os.rename(filename, f.readline()[:-1]+filename[-4:])
它从作为参数给出的 txt 文件中读取名称,并重命名其他 avi 文件。但是缺少一个起始编号为“102”的文件,所以现在从“102”开始的完整顺序是错误的。如果我现在重新运行此文件并删除我的txt 文件中的第 102 行,则从 102 开始的每个文件都将被删除,除了最后一个。
希望您知道如何修复这个小错误,并可以向我解释这是如何发生的,因为我在这个问题上工作的时间太长了。
---编辑---
我的文本文件的简短 sn-p
snip
099. Abenteuer in Ido
100. Corsa, der junge Rebell
101. Unser Papa ist ein Held
102. Die Gesetze des Vertrauens
103. Um acht in Spider's Cafe
104. Ruffy gegen Vivi
105. Aufruhr in Rainbase
snip
列表最多有 400 个。我有 300 个文件,因此不会发生 os.rename 的问题。当我第一次运行脚本时,编号为 102 的文件不存在,所以上面的所有内容都是一个数字错误。我添加了文件 102 并想重新运行此脚本。
我重新运行之前的文件:
...
100. Corsa, der junge Rebell.avi
101. Unser Papa ist ein Held.avi
102. Die Gesetze des Vertrauens.avi
103. Um acht in Spider's Cafe.avi
104. Ruffy gegen Vivi.avi
105. Aufruhr in Rainbase.avi
...
之后的文件:
...
100. Corsa, der junge Rebell.avi
101. Unser Papa ist ein Held.avi
301. Sogeking, der Held der Stunde.avi
...
如果您需要更多信息,我会尽快提供
【问题讨论】:
-
我不太明白这个问题。您能否提供文本文件的内容、运行脚本之前存在的 avi 文件列表以及之后存在的 avi 文件列表?
-
是的,您使用的列表会很有帮助。
-
作为初学者,在您点击此行之前:
os.rename(filename, f.readline()[:-1]+filename[-4:])我将添加以下调试语句:temp=f.readline()print filename,(temp + filename[-4:])这将帮助您了解正在处理的文件名
标签: python file operating-system file-rename