如何从文件中读取int?我有一个大的(512MB)txt文件,其中包含整数数据:
0 0 0 10 5 0 0 140
0 20 6 0 9 5 0 0
现在,如果我使用c = file.read(1)
,我一次只能获得一个字符,但我一次只需要一个整数。像:
c = 0
c = 10
c = 5
c = 140 and so on...
任何伟大的心脏请帮忙。提前谢谢。
答案 0 :(得分:5)
这是一种方式:
with open('in.txt', 'r') as f:
for line in f:
for s in line.split(' '):
num = int(s)
print num
通过执行for line in f
,您正在逐位阅读(既不使用read() all
也不使用readlines
)。重要的是因为您的文件很大。
然后你在空格上分割每一行,并在你去的时候读取每个数字。
您可以执行更多错误检查,而不是简单示例,如果文件包含损坏的数据,则会进行barf。
正如评论所说,这对你来说应该足够了 - 否则,如果你的文件可能有很长的行,你可以做一些比一次阅读块更棘手的事情。
答案 1 :(得分:2)
512 MB真的不是那么大。如果你打算创建一个数据列表,我认为一次完成阅读步骤没有问题:
my_int_list = [int(v) for v in open('myfile.txt').read().split()]
如果您可以构建代码以便不需要内存中的整个列表,那么使用生成器会更好:
def my_ints(fname):
for line in open(fname):
for val in line.split():
yield int(val)
然后使用它:
for c in my_ints('myfile.txt'):
# do something with c (which is the next int)
答案 2 :(得分:-1)
我会这样做: