2024-04-28 04:52:45 发布
网友
如何从文件中读取int?我有一个大的(512MB)txt文件,其中包含以下整数数据:
0 0 0 10 5 0 0 140 0 20 6 0 9 5 0 0
现在如果我使用c = file.read(1),一次只能得到一个字符,但一次需要一个整数。比如:
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)。重要,因为你的文件很大。
for line in f
read() all
readlines
然后把每一行按空格分开,边读边读。
你可以比那个简单的例子做更多的错误检查,如果文件包含损坏的数据,那么这个例子将是错误的。
正如评论所说,这对你来说应该足够了——否则如果你的文件可能有非常长的行,你可以做一些更棘手的事情,比如一次读取块。
我会这样做:
512MB真的没那么大。如果您无论如何都要创建一个数据列表,我认为一次性完成读取步骤没有问题:
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)
有一种方法:
通过执行
for line in f
,您可以逐位读取(既不使用read() all
,也不使用readlines
)。重要,因为你的文件很大。然后把每一行按空格分开,边读边读。
你可以比那个简单的例子做更多的错误检查,如果文件包含损坏的数据,那么这个例子将是错误的。
正如评论所说,这对你来说应该足够了——否则如果你的文件可能有非常长的行,你可以做一些更棘手的事情,比如一次读取块。
我会这样做:
512MB真的没那么大。如果您无论如何都要创建一个数据列表,我认为一次性完成读取步骤没有问题:
如果您可以构造代码,这样就不需要内存中的整个列表,那么最好使用生成器:
然后使用它:
相关问题 更多 >
编程相关推荐