如何使用Python3.5.seek()结束.txt文件

2024-04-27 07:52:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个程序,它将用户的行为记录在用户友好的日志文件中,该文件存储为.txt。到目前为止,它只记录会话的开始和结束,这是完全相同的时间。但是,当前当我运行该程序时,它会删除文件的先前内容。我认为这是因为光标在寻找点(0,0)。有办法查到文件的结尾吗?代码如下。


import atexit
import datetime

def logSession():
    sessionRecord = open(r'C:\Users\Aanand Kainth\Desktop\Python Files\Login Program\SessionRecords.txt', "r+")

     sessionRecord.seek(-1,-1)

     sessionRecord.write("Session Began: " '{:%Y-%m-%d | %H:%M:%S}'.format(datetime.datetime.now()) + "\n")

 def runOnQuit():
     sessionRecord = open(r'C:\Users\Aanand Kainth\Desktop\Python Files\Login Program\SessionRecords.txt', "r+")

     sessionRecord.seek(-1,-1)

     sessionRecord.write("Session Ended: " '{:%Y-%m-%d | %H:%M:%S}'.format(datetime.datetime.now()) + """\n-------------------------------------------------------------------------------------------\n""")

 logSession()

 atexit.register(runOnQuit)

如果您在计算机上创建了必需的文件,并运行此.PY文件,您会发现有时它可以按需要工作,而有时则不工作。有谁能告诉我如何查找到底,或者是否有更好的解决方案来帮助我?这是一个自我分配的挑战,所以我不喜欢赠品,只是暗示。


Tags: 文件用户import程序txtdatetimedef记录
2条回答

seek的参数不正确,seek需要两个参数、一个偏移量(多少字节)和描述从何处查找的位置(开始:0,当前:1,结束:2)。所以你需要的是:

import io
sessionRecord.seek(0, io.SEEK_END)

或:

sessionRecord.seek(0, 2)   # Py2

但可以通过以追加模式打开文件来避免:

with open('<filename>', 'a'):
    sessionRecord.write(...)

只要以正确的模式打开文件。如果要在不删除以前内容的情况下添加到文件,请使用'a'(表示“append”),而不是'r+',这是一种截断读/写操作。您将不再需要使用seek()

相关问题 更多 >