Python 程序不会读取文本文件中的新行
Python program won't read new line in text file
我正在尝试逐行读取文本文件,以便将信息存储到一些变量中,但它在文件末尾之前捕获到错误。
在执行 line = f.readline().strip() 时,程序拒绝读取文件中的下一行并发生此错误:
回溯(最近调用最后):
文件“/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 = open("demofile.txt", "r")
for x in f:
print(x)
尝试:
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)" 之前,这一行 "f" 是您之前打开的文件的对象。在这条语句之后它不再是文件对象。所以它不会有文件相关的属性。
我不确定您要在此声明中实现什么,但如果有可能,您可以在此处更改变量名称。使用任何其他变量来分配 Furgone(cod, tipo, targa, categoria, posti, modello, marca) 而不是 "f"
f = Furgone(cod, tipo, targa, categoria, posti, modello, marca)
line = f.readline().strip()
我正在尝试逐行读取文本文件,以便将信息存储到一些变量中,但它在文件末尾之前捕获到错误。 在执行 line = f.readline().strip() 时,程序拒绝读取文件中的下一行并发生此错误:
回溯(最近调用最后):
文件“/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 = open("demofile.txt", "r")
for x in f:
print(x)
尝试:
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)" 之前,这一行 "f" 是您之前打开的文件的对象。在这条语句之后它不再是文件对象。所以它不会有文件相关的属性。 我不确定您要在此声明中实现什么,但如果有可能,您可以在此处更改变量名称。使用任何其他变量来分配 Furgone(cod, tipo, targa, categoria, posti, modello, marca) 而不是 "f"
f = Furgone(cod, tipo, targa, categoria, posti, modello, marca)
line = f.readline().strip()