当使用seek(0,0)时,它会在python中任意删除文件顶部的行

2024-05-14 02:39:08 发布

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

import datetime         #To use date time functionality

file_log = open('.\Log_Detailed.log', 'w')
file_log.write("1 \n");file_log.write("2 \n");file_log.write("3 \n");file_log.write("4 \n");file_log.write("5 \n");file_log.write("6 \n");file_log.write("7 \n");file_log.write("8 \n");file_log.write("9 \n");file_log.write("10 \n");
file_log.write("\n----------------------------------------------------------------------------\n")
file_log.write("                             LTE RRC PARSER                                 \n")
file_log.write("----------------------------------------------------------------------------\n")
file_log.write("\n\n")
file_log.write("Cases Execution Started At : " + datetime.datetime.now().ctime())
file_log.write("\n\n")

file_log.seek(0);             #This line is the problem
file_log.write("\n***********************SUMMARY*************************\n")
file_log.write("No. of cases Passed =\n");
file_log.write("No. of cases Failed =\n");
file_log.write("*********************************************************\n");
file_log.close();

当我运行上面的代码注释掉“文件_日志搜索(0,0)”,它打印以下输出:

1个

4个

8个

9个

10个

----------------------------------------------------------------------------
                         LTE RRC PARSER                                 
----------------------------------------------------------------------------

案件执行时间:2014年8月7日星期四12:26:32

但是当我运行上面的代码时,输出显示为如下所示:你知道吗

***********************SUMMARY*************************

通过案例数=

失败案例数=

*********************************************************

----------------------------------------------------------------------------

案件执行时间:2014年8月7日星期四12:35:28

正如您在第二个输出中看到的,许多行被模糊地覆盖了!使用seek(0,0)后,它会覆盖比需要更多的行。我想要的是LTE RRC之前写的摘要部分。请救命!你知道吗


Tags: ofno代码logparserdatetime时间seek
2条回答

As you can see in the second output many of the lines has been overwritten ambiguously!

不,这并不含糊。你知道吗

它覆盖了同样多的字节(!)根据需要。你知道吗

file_log.write("\n***********************SUMMARY*************************\n")
file_log.write("No. of cases Passed =\n");
file_log.write("No. of cases Failed =\n");
file_log.write("*********************************************************\n");

向文件写入159个字节(除非您使用Windows和文本文件,否则在这些情况下\n将被\r\n替换,最终得到164个字节)。你知道吗

因此文件的前159(或164)字节被覆盖。由于文件中的行非常短,因此会丢失更多行,就好像它们更长一样。你知道吗

文件不是。它们是字符或字节

当您返回到开头时,您将覆盖那么多字符。 如果您需要这样做,您必须提前计算字节数,以便留出足够的空间。你知道吗

也许您可以这样写文件,留下空的空间(在=)供以后重写。你知道吗

file_log.write("\n***********************SUMMARY*************************\n")
file_log.write("No. of cases Passed =        \n");
file_log.write("No. of cases Failed =        \n");
file_log.write("*********************************************************\n");
file_log.write("\n                                      \n")
file_log.write("                             LTE RRC PARSER                                 \n")
file_log.write("                                      \n")
file_log.write("\n\n")
file_log.write("Cases Execution Started At : " + datetime.datetime.now().ctime())
file_log.write("\n\n")

相关问题 更多 >