您可以从带有open(fname,'a +')的文件中读取第一行吗?

用户名

我希望能够打开一个文件,将一些文本附加到末尾,然后仅读取第一行。我确切地知道文件的第一行有多长时间,并且文件足够大,我不想一次将其全部读入内存。我试过使用:

with open('./output files/log.txt', 'a+') as f:

    f.write('This is example text')

    content = f.readline()
    print(content)

但是打印语句为空。当我尝试使用open('./output files/log.txt')open('./output files/log.txt', 'r+')代替open('./output files/log.txt', 'a+')它工作时,所以我知道它与'a+参数有关。我的问题是我必须附加到文件中。我如何追加到文件并仍然获得第一行而不使用类似的东西

with open('./output files/log.txt', 'a+') as f_1:

    f.write('This is example text')

    with open('./output files/log.txt') as f_2:
        content = f_2.readline()
        print(content)
Xgord

当使用append标志打开文件时a,它将文件描述符的指针移到文件末尾,这样write调用将添加到文件末尾。

readline()函数从文件的当前指针读取,直到'\n'读取下一个字符为止因此,当您使用append打开文件,然后调用时readline,它将尝试读取从文件末尾开始的一行。这就是为什么您的print通话空白的原因。

您可以file使用tell()函数查看对象当前指向的位置,从而在操作中看到这一点

要读取第一行,必须确保文件的指针位于文件的开头,可以使用seek函数来完成。seek 有两个参数offsetfrom_what如果省略第二个参数,offset则从文件开头开始。因此,要跳至文件的开头,请执行:seek(0)

如果要跳回到文件末尾,可以包括该from_what选项。from_what=2表示从文件末尾开始的偏移量。因此,请跳到最后:seek(0, 2)


在追加模式下打开文件时,演示文件指针:

使用文本文件的示例如下所示:

the first line of the file
and the last line

代码:

with open('example.txt', 'a+') as fd:
    print fd.tell() # at end of file
    fd.write('example line\n')
    print fd.tell() # at new end of the file after writing

    # jump to the beginning of the file:
    fd.seek(0)
    print fd.readline()

    # jump back to the end of the file
    fd.seek(0, 2)
    fd.write('went back to the end')

控制台输出:

45
57
the first line of the file

的新内容example.txt

the first line of the file
and the last line
example line
went back to the end


编辑:添加了跳回到文件末尾

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将bash命令的输出插入到现有文件的第一行吗?

来自分类Dev

删除HTML文件中除第一行之外的所有文本行吗?

来自分类Dev

当我从文件中的一组数据计算平均值时,我可以跳过第一行吗

来自分类Dev

我可以在reflog中添加一行吗?

来自分类Dev

我可以在reflog中添加一行吗?

来自分类Dev

您可以在一个 DisplayAlert 中包含多于一行吗?

来自分类Dev

您可以跳过ul列表中的一行吗?

来自分类Dev

如何使用Java有效读取Hadoop(HDFS)文件中的第一行?

来自分类Dev

如何使用Java有效读取Hadoop(HDFS)文件中的第一行?

来自分类常见问题

我可以在.git / config文件中注释掉一行吗?

来自分类Dev

您可以发送带有Firestore读取请求的数据吗?

来自分类Dev

我可以在ruamel.yaml的CommentedMap中插入一行吗?

来自分类Dev

在Unix“较少”中,我可以跳到不包含X的下一行吗?

来自分类Dev

我可以使用jquery .each()计算表单中的每一行吗?

来自分类Dev

安装模块时可以在DNN web.config中添加一行吗?

来自分类Dev

我们可以忽略json解析中的一行吗?

来自分类Dev

可以将此for循环减少为一行吗?

来自分类Dev

有条件地搜索和替换在vim中的一行吗?

来自分类Dev

Python有什么理由跳过一行吗?

来自分类Dev

在Node JS中仅读取文件第一行的最有效方法是什么?

来自分类Dev

在Excel中,您可以创建一个条件语句,该条件语句适用于Excel工作表中的每一行吗?

来自分类Dev

JAVA可以从文件中读取一行

来自分类Dev

StreamReader读取文件,StreamWriter写入结果,省略第一行吗?

来自分类Dev

我的bufferedread只读取文件的第一行吗?

来自分类Dev

读取没有行终止符的文件的第一行

来自分类Dev

带有Objectify的GAE-您可以查询HashMap吗?

来自分类Dev

您可以调用带有按钮参数的Sub吗?

来自分类Dev

您可以制作带有参数的函数向量吗?

来自分类Dev

可以在同一行中重用BASH行的第一个参数吗?

Related 相关文章

  1. 1

    将bash命令的输出插入到现有文件的第一行吗?

  2. 2

    删除HTML文件中除第一行之外的所有文本行吗?

  3. 3

    当我从文件中的一组数据计算平均值时,我可以跳过第一行吗

  4. 4

    我可以在reflog中添加一行吗?

  5. 5

    我可以在reflog中添加一行吗?

  6. 6

    您可以在一个 DisplayAlert 中包含多于一行吗?

  7. 7

    您可以跳过ul列表中的一行吗?

  8. 8

    如何使用Java有效读取Hadoop(HDFS)文件中的第一行?

  9. 9

    如何使用Java有效读取Hadoop(HDFS)文件中的第一行?

  10. 10

    我可以在.git / config文件中注释掉一行吗?

  11. 11

    您可以发送带有Firestore读取请求的数据吗?

  12. 12

    我可以在ruamel.yaml的CommentedMap中插入一行吗?

  13. 13

    在Unix“较少”中,我可以跳到不包含X的下一行吗?

  14. 14

    我可以使用jquery .each()计算表单中的每一行吗?

  15. 15

    安装模块时可以在DNN web.config中添加一行吗?

  16. 16

    我们可以忽略json解析中的一行吗?

  17. 17

    可以将此for循环减少为一行吗?

  18. 18

    有条件地搜索和替换在vim中的一行吗?

  19. 19

    Python有什么理由跳过一行吗?

  20. 20

    在Node JS中仅读取文件第一行的最有效方法是什么?

  21. 21

    在Excel中,您可以创建一个条件语句,该条件语句适用于Excel工作表中的每一行吗?

  22. 22

    JAVA可以从文件中读取一行

  23. 23

    StreamReader读取文件,StreamWriter写入结果,省略第一行吗?

  24. 24

    我的bufferedread只读取文件的第一行吗?

  25. 25

    读取没有行终止符的文件的第一行

  26. 26

    带有Objectify的GAE-您可以查询HashMap吗?

  27. 27

    您可以调用带有按钮参数的Sub吗?

  28. 28

    您可以制作带有参数的函数向量吗?

  29. 29

    可以在同一行中重用BASH行的第一个参数吗?

热门标签

归档