我正在创建一个包含逐行记录的日志文件。
1-如果文件不存在,则应创建文件并追加标题行和记录
2-如果存在,请检查第一行中的文本timeStamp
。如果它存在,则附加记录,否则添加标题列并记录自己
我试过w,a和r +;没有什么对我有用。以下是我的代码:
logFile = open('Dump.log', 'r+')
datalogFile = log.readline()
if 'Timestamp' in datalogFile:
logFile.write('%s\t%s\t%s\t%s\t\n'%(timestamp,logread,logwrite,log_skipped_noweight))
logFile.flush()
else:
logFile.write('Timestamp\t#Read\t#Write\t#e\n')
logFile.flush()
logFile.write('%s\t%s\t%s\t%s\t\n'%(timestamp,logread,logwrite,log_skipped))
logFile.flush()
如果文件不存在,代码将失败
答案 0 :(得分:6)
使用'a+'
模式:
logFile = open('Dump.log', 'a+')
描述:
<强> A + 强>
开放阅读和写作。如果没有,则创建该文件 存在。流位于文件的末尾。随后 写入文件将始终以当前的当前结束 文件结束,不论是否有任何介入的fseek(3)或类似的
答案 1 :(得分:1)
以下代码可行:
import os
f = open('myfile', 'ab+') #you can use a+ if it's not binary
f.seek(0, os.SEEK_SET)
print f.readline() #print the first line
f.close()
答案 2 :(得分:0)
试试这个:
import os
if os.path.exists(my_file):
print 'file does not exist'
# some processing
else:
print 'file exists'
# some processing
答案 3 :(得分:0)
您正在以r+
模式打开文件,这意味着您认为该文件存在。此外,如果您打算在文件上写入,则应使用a+
模式打开它(毫不掩饰地窃取ndpu的说明)
您的代码将成为:
logFileDetails = []
with open("Dump.log","a+") as logFile:
logFileDetails = logFile.readLines()
if logFileDetails and "Timestamp" in logFileDetails:
pass # File exists, write your stuff here
else:
pass # Log file doesn't exist, write timestamp here
答案 4 :(得分:0)
检查文件是否存在引入竞争条件,即另一个进程可以创建它或将其删除 分别返回false或true,从而产生严重错误。你应该使用:
if open('path\to.filename', 'a+') != '':
stuff_if_exists
else:
stuff_if_not_exists