我试图用Python重命名一个目录中的多个文件,但是for循环中的计数从未更新,所以我得到了一个“file already exists”错误。你知道吗
如何得到一个更新的变量(I),这样文件名就不会重复了?你知道吗
def change_name():
for i, filename in enumerate(glob.glob(current_dir + '\packettest.txt')):
os.rename(filename, os.path.join(current_dir, 'packettest_sent' + str(i) + '.txt' ))
i = i + 1
这是我得到的错误:
os.rename(filename, os.path.join(current_dir, 'packettest_sent' + str(i) + '.txt' ))
WindowsError: [Error 183] Cannot create a file when that file already exists
编辑:
感谢您的评论,我理解enumerate的作用,但问题仍然存在,我仍然等于0。这是我的完整代码:
import os.path
import sys
import glob
import time
current_dir = os.getcwd()
file_path = current_dir + "\packettest.txt"
#def main():
def change_name():
for i, filename in enumerate(glob.glob(current_dir + '\packettest.txt')):
os.rename(filename, os.path.join(current_dir, 'packettest_sent' + str(i) + '.txt' ))
def packet_listener():
while not os.path.exists(file_path):
time.sleep(1)
print "waiting..."
if os.path.isfile(file_path):
# read file
change_name()
time.sleep(1)
packet_listener()
print "OK"
else:
raise ValueError("%s isn't a file!" % file_path)
if __name__ == '__main__':
packet_listener()
谢谢你的预付款。你知道吗
附言:对不起,我的英语不好
请替换这段代码:
有了这个:
请三思:
enumerate(glob.glob(current_dir + '\packettest.txt'))
,你想做什么?只有一个文件,你不使用通配符(*
,等等),为什么你需要一个循环在这里,你期待什么结果?你知道吗下面(避免递增i,因为枚举已经这样做了)
相关问题 更多 >
编程相关推荐