检查文件是否存在然后追加记录

时间:2014-03-04 14:02:39

标签: python

我正在创建一个包含逐行记录的日志文件。

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()

如果文件不存在,代码将失败

5 个答案:

答案 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