【问题标题】:Python program won't read new line in text filePython程序不会读取文本文件中的新行
【发布时间】:2019-12-19 10:15:43
【问题描述】:

我正在尝试逐行读取文本文件,以便将信息存储到一些变量中,但它在文件结束之前捕获了一个错误。 在执行 line = f.readline().strip() 时,程序拒绝读取文件中的下一行并出现此错误:

Traceback(最近一次调用最后一次):

文件“/Users/JoCarbons/PycharmProjects/untitled/venv/Gestione.py”,第 48 行,在 main 中

line = f.readline().strip()

AttributeError: 对象没有属性'readline'

这是主文件的一部分:

def main(self):

    Veicoli = []

    try:
        f = open("veicoli.txt", "r")
        line = f.readline().strip()

        while (line != ''):
            tok = line.split()
            cod = int(tok[0])
            tipo = tok[1]
            targa = tok[2]
            line = f.readline().strip()
            if (tipo == "auto"):
                tok = line.split()
                cilindrata = int(tok[0])
                diesel = bool(tok[1])
                line = f.readline().strip()
                modello = line
                line = f.readline().strip()
                marca = line
                a = Auto(cod, tipo, targa, cilindrata, diesel, modello, marca)
                Veicoli.append(a)
                line = f.readline()
            else:
                #line = f.readline().strip()
                categoria = line
                line = f.readline().strip()
                posti = int(line)
                line = f.readline().strip()
                modello = line
                line = f.readline().strip()
                marca = line
                f = Furgone(cod, tipo, targa, categoria, posti, modello, marca)
                line = f.readline().strip()
                Veicoli.append(f)
        f.close()
    except IOError:
        print("IO error found.")
    except:
        print("Unexpected error: ", sys.exc_info()[0])
        raise

【问题讨论】:

  • 向我们展示您的整个代码,f 是如何定义的?

标签: python file text-files readline


【解决方案1】:

以下几行是完全错误的。您试图对无效的对象进行文件操作。在“f = Furgone(cod, tipo, targa, categoria, posti, modello, marca)”之前,这行“f”是您之前打开的文件的对象。在此语句之后,它不再是文件对象。所以它不会有文件相关的属性。 我不确定您在此声明中要实现的目标,但如果可以,您可以在此处更改变量名。使用任何其他变量来分配 Furgone(cod, tipo, targa, categoria, posti, modello, marca) 而不是 "f"

f = Furgone(cod, tipo, targa, categoria, posti, modello, marca)
line = f.readline().strip()

【讨论】:

    【解决方案2】:

    试试这个简单的程序,它会打印文件中的每一行

    f = open("demofile.txt", "r")
    for x in f:
      print(x)
    

    【讨论】:

      【解决方案3】:

      试试:

       line = f.read().splitlines()
      

      strip() 的使用: .strip() 与字符串一起使用,例如

        line = 'A rose is a rose is a rose is a rose,\n Gertrude Stein (1874 - 1946)'
      
         print(line.strip())
         A rose is a rose is a rose is a rose,
            Gertrude Stein (1874 - 1946)
      

      【讨论】:

      • 我试过这个,但它仍然返回一个错误,正是在这里: f = Furgone(cod, tipo, targa, categoria, posti, modello, marca) line = f.read().splitlines( )
      • 您能不能给我们一些您正在阅读的文件的摘录?我认为这是一个纯文本文件,因为您一直在尝试使用 strip()。我编辑了我的答案,向您展示 .strip() 的用法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2011-09-07
      • 2018-12-29
      • 1970-01-01
      相关资源
      最近更新 更多