如何从文件中读取 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...
任何伟大的心脏请帮助。提前致谢。
如何从文件中读取 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...
任何伟大的心脏请帮助。提前致谢。
这是一种方法:
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
)。很重要,因为您的文件很大。
然后你用空格分割每一行,并在你去的时候阅读每个数字。
您可以进行比那个简单示例更多的错误检查,如果文件包含损坏的数据,它将失败。
正如评论所说,这对你来说应该足够了——否则,如果你的文件可能有非常长的行,你可以做一些更棘手的事情,比如一次读取块。
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)
我会这样做: