【问题标题】:(Python) Can't Print all the Contents of the Text File(Python) 无法打印文本文件的所有内容
【发布时间】:2017-02-26 07:20:08
【问题描述】:

我已尽力打印我的文本文件的所有内容。但我仍然无法理解出了什么问题。这是我的代码:

Input = input("TYPE: ")

with open("tryme.txt","a+") as f:
    f.write(Input + "\n\n\n" )

    x = f.read()
    print(x)

my codes and text file

【问题讨论】:

    标签: python python-3.x file-io text-files spyder


    【解决方案1】:

    a+ 打开以供读取和附加(在文件末尾写入)。文件 如果不存在则创建。读取的初始文件位置 位于文件的开头,但输出始终附加到 文件结束。

    您应该使用f.seek() 将文件偏移量设置为文件的开头。

    with open("tryme.txt","a+") as f:
        f.write(Input + "\n\n\n" )
        f.seek(0)
        x = f.read()
        print(x)
    

    输出:

    TYPE: test2
    test1
    
    
    test2
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      写入文件后,阅读器的当前位置在文件末尾。如果要读取整个文件,需要回到开头。

      试试

      Input = input("TYPE: ")
      
      with open("tryme.txt","a+") as f:
          f.write(Input + "\n\n\n" )
          f.seek(0,0)
          x = f.read()
          print(x)
      

      【讨论】:

      • 如果不问太多,f.seek(0,0)是什么意思?第二个零的目的是什么?无论如何,感谢您的帮助!
      • tutorialspoint.com/python/file_seek.htm seek() 的第二个参数是从哪里来的。它指定我们是基于当前位置、基于文件的开头还是基于文件的结尾来获取偏移量。它默认为 0,因此如果您只想跳到开头,则不一定要包含它
      • 为了更清楚起见,f.seek(0,0) 表示在文件 f 中,从头开始向前偏移 0。如果您从该位置写入,则表示在文件前面,如果您阅读,则可以阅读该职位之后的所有内容。您可以指定文件中的任何位置。如果你想要结束你可以做f.seek(0,2)或者如果你想在当前位置之后移动n个字符f.seek(n,1)
      • 非常感谢!所以这仅仅意味着我可以从下到上打印我的文本文件的内容,我喜欢它吗?
      • seek 本质上相当于在文本文件中移动光标。它主要用于查找文件的结尾以再次写入或开头或某些指定的行以进行读取。您不能使用 seek 从底部到顶部打印。当然,除非您在循环中反复使用它,一次从底部移动一行,打印您从readline() 获得的任何内容,当您阅读时,它将始终向下移动文件。如果你想读两遍,你也可以使用 seek,因为一旦你到达底部,read only 会返回 ''
      猜你喜欢
      • 2015-05-19
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多