我被建议使用一个单独的文件作为计数器给我的文件顺序文件名,但我不明白我会怎么做。我需要我的文件名有序列号,如file1.txt,file2.txt,file3.txt。任何帮助表示赞赏!
编辑: 我的错误,我忘了说代码在执行时会生成1个文件,并且需要一种方法来创建一个具有不同文件名的新文件。
更多编辑: 我基本上拍摄了一个屏幕截图并试图将其写入文件,我希望能够在不被覆盖的情况下拍摄多个屏幕。
答案 0 :(得分:3)
可能需要更多信息,但如果要按顺序命名文件以避免名称冲突等,则不一定需要单独的文件来记录当前的数字。我假设你想不时写一个新文件,编号以跟踪事情?
因此,给定一组文件,您想知道下一个有效文件名是什么。
类似于(对于当前目录中的文件):
import os.path
def next_file_name():
num = 1
while True:
file_name = 'file%d.txt' % num
if not os.path.exists(file_name):
return file_name
num += 1
显然,虽然目录中的文件数量增加会变慢,但这取决于您期望的文件数量。
答案 1 :(得分:0)
这样的东西?
n = 100
for i in range(n):
open('file' + str(i) + '.txt', 'w').close()
答案 2 :(得分:0)
假设的例子。
import os
counter_file="counter.file"
if not os.path.exists(counter_file):
open(counter_file).write("1");
else:
num=int(open(counter_file).read().strip()) #read the number
# do processing...
outfile=open("out_file_"+str(num),"w")
for line in open("file_to_process"):
# ...processing ...
outfile.write(line)
outfile.close()
num+=1 #increment
open(counter_file,"w").write(str(num))
答案 3 :(得分:0)
# get current filenum, or 1 to start
try:
with open('counterfile', 'r') as f:
filenum = int(f.read())
except (IOError, ValueError):
filenum = 1
# write next filenum for next run
with open('counterfile', 'w') as f:
f.write(str(filenum + 1))
filename = 'file%s.txt' % filenum
with open(filename, 'w') as f:
f.write('whatever you need\n')
# insert all processing here, write to f
在Python 2.5中,您还需要第一行from __future__ import with_statement
才能使用此代码示例;在Python 2.6或更高版本中,您没有(并且您也可以使用比%
运算符更优雅的格式化解决方案,但这是一个非常小的问题。)