#将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
第一种:1
2
3
4
5
6
7
8
9
10
ft = open("a", 'w')
for entry in result :
print entry
try:
ft.write(entry+'\n')
except:
log.error('write backup error:'+JOBNAME)
ft.close()#在内容写完后再关闭文件
os.chdir(basePath)
第二种:
1
2
3
4
5
6
7
8
9
10
11
for entry in result :
#注意:在每次进入循环后先打开文件
ft = open("a", 'a')#注意:第二个参数,是以追加形式打开,否则还是只有一行
print entry
try:
ft.write(entry+'\n')
except:
log.error('write backup error:'+JOBNAME)
finally:
ft.close()
os.chdir(basePath)
建议使用第一种,因为第二种频繁对文件进行打开和关闭操作,效率较低。
没有办法在开头直接插入内容,必需读一遍文件。曾经尝试过很多方法,当时也网上到处找方法,终究无果。
所以,最后还是用了最简单暴力的方法,用osd.walk遍历所有python文件,把开头的那些内容写入一个新文件,再读出原文件的内容,写入新文件,然后把新文件重命名为原文件名称。
虽然很暴力,后面发现,其实速度也很快,可能是文件不是太大的缘故。