Python:帮助计数器和编写文件

时间:2010-03-08 12:29:44

标签: python filesystems

  

可能重复:
  Python: How do I create sequential file names?

我被建议使用一个单独的文件作为计数器给我的文件顺序文件名,但我不明白我会怎么做。我需要我的文件名有序列号,如file1.txt,file2.txt,file3.txt。任何帮助表示赞赏!

编辑: 我的错误,我忘了说代码在执行时会生成1个文件,并且需要一种方法来创建一个具有不同文件名的新文件。

更多编辑: 我基本上拍摄了一个屏幕截图并试图将其写入文件,我希望能够在不被覆盖的情况下拍摄多个屏幕。

4 个答案:

答案 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或更高版本中,您没有(并且您也可以使用比%运算符更优雅的格式化解决方案,但这是一个非常小的问题。)