【问题标题】:Python prints only first line of textfilePython 只打印文本文件的第一行
【发布时间】:2017-06-26 09:01:44
【问题描述】:

我有一个包含几行的文本文件并想打印它们,但它只打印第一行。如果我使用循环(见下面的代码),它会垂直打印第一行..

file = open('file.txt', 'r')
data = file.read()
file.close()
for line in data:
     print (line)

【问题讨论】:

  • 您在阅读所有行之前关闭文件
  • data 是一个字符串,而不是行列表。
  • @Patrick85 好吧,我是个白痴,但它仍然垂直打印第一行:D
  • 您的意思可能是file.readlines()。另外,避免使用file 作为变量名。
  • 操作系统和python版本?如果您在 Windows 上,也可以尝试使用“rb”。 Omg,数据是一个字符串,而不是字符串列表...用于 data.splitlines() 中的行:

标签: python


【解决方案1】:
file = open('file.txt', 'r')
data = file.readlines()
for line in data:
     print (line)
file.close()

【讨论】:

  • 这种方法太长了,需要一个几MB的大文件,你读取整个文件而不是只读取第一行
  • @glegoux:说明是:我有一个包含几行的文本文件,想打印出来
  • 阅读标题Python prints only first line of textfile
  • 我想你误读了I have a textfile with a few lines and want to print them, but it only prints the first line 问题是它只打印第一行,他不想只打印第一行
【解决方案2】:

尝试使用with 自动关闭您的文件并让您的代码更具可读性/pythonic:

with open('file.txt', 'r') as f:
    for line in f.readlines():
        print (line)

【讨论】:

  • 这种方法太长了,需要一个几MB的大文件,你读取整个文件而不是只读取第一行
  • 我相信 OP 想要读取整个文件,因为他拥有的文件仅包含几行技术上他只需要读取几行但问题似乎意味着需要读取整个文件
【解决方案3】:
for line in open('file.txt', 'r'):
    print(line)

【讨论】:

  • 请注意,此解决方案中的变量line 包含行分隔符
【解决方案4】:

使用with 语句读取文本文件通常是个好主意。

with open('file.txt', 'r') as file:
  data = file.read()

要仅阅读第一行,请使用readline(),它是为此而设计的(使用readlines(),就像其他答案表明效率不高):

with open('file.txt', 'r') as file:
  first_line = file.readline()

【讨论】:

    【解决方案5】:

    文件.txt

    1 foo buzz bizz foo buzz bizz foo buzz bizz foo buzz bizz foo buzz bizz
    2 foo foo foo foo foo foo foo foo foo foo bizz bizz bizz bizz foo foo
    3 foo foo foo foo foo foo foo foo foo foo bizz bizz bizz bizz foo foo
    4 foo buzz bizz foo buzz bizz foo buzz bizz foo buzz bizz foo buzz bizz
    5 foo foo foo foo foo foo foo foo foo foo bizz bizz bizz bizz foo foo
    6 foo buzz bizz foo buzz bizz foo buzz bizz foo buzz bizz foo buzz bizz
    

    做:

    def print_first_lines(filename, n):
        with open(filename, 'r') as desc:
            for _ in range(n):
                print(desc.readline().strip())
    
    print_first_lines('file.txt', 1)
    

    输出:

    1 foo buzz bizz foo buzz bizz foo buzz bizz foo buzz bizz foo buzz bizz
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      相关资源
      最近更新 更多