我想从文件中读取4行,并将每行放在一个单独的变量中。据我所知,我不能使用:
for file in f
因为一次只需要一行,所以我需要将4行放在4个单独的变量中
我当前的“解决方案”如下所示:
while f.readline != None:
tempName = f.readline()
print(tempName)
tempColour = f.readline()
tempAge = f.readline()
tempWeight = f.readline()
# this try is taking the varables and making an object
try:
tempSheep = Sheep(tempName, tempColour, int(tempAge), int(tempWeight))
except:
print("your file is in an improper format")
break
else:
sheepList.append(tempSheep)
据我所知,问题在于将变量放入对象中。该程序运行良好,然后由于某种原因又要运行额外的时间,在这种情况下,变量不能正确地用兼容的数据类型填充,并且类会引发错误。
最终,我想我的问题是:如何使循环正确退出?
它正在运行超出文件末尾,使变量等于无,然后在创建对象时引发错误。
很抱歉,如果这篇文章比较乱,这是我的第一篇关于堆栈溢出的文章。
答案 0 :(得分:0)
您可以将文件对象作为可迭代的文件解压缩为4个变量,同时用其余各行重新分配文件变量以进一步解压缩:
with open('input_file') as f:
lines = f
while lines:
try:
name, colour, age, weight, *lines = lines
sheepList.append(Sheep(name, colour, int(age), int(weight)))
except Exception:
print("your file is in an improper format")
break
答案 1 :(得分:0)
类似于blhsing指出的那样,您可以这样编写代码:
with open('some_file', 'r') as f:
tempName = f.readline()
tempColour = f.readline()
tempAge = f.readline()
tempWeight = f.readline()
# if you want everything else from the file you can do this:
# rest = f.read()
# or if you want to continue parsing data line by line, you can do this:
# for line in f:
# process_line(line)
然后可以正常处理变量。如果您担心文件格式不正确,则可以在try / except块中将with包裹起来