使用python一次读取一个整数

2024-04-28 04:52:45 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从文件中读取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...

任何伟大的心灵请帮助。提前谢谢。


Tags: and文件数据txtreadsoon整数
3条回答

有一种方法:

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)。重要,因为你的文件很大。

然后把每一行按空格分开,边读边读。

你可以比那个简单的例子做更多的错误检查,如果文件包含损坏的数据,那么这个例子将是错误的。

正如评论所说,这对你来说应该足够了——否则如果你的文件可能有非常长的行,你可以做一些更棘手的事情,比如一次读取块。

我会这样做:

  • 缓冲区=file.read(8192)
  • 内容+=缓冲区
  • 按空格分隔输出字符串
  • 从数组中删除最后一个元素(可能不是整数)
  • 用最后一个元素字符串替换内容
  • 重复,直到缓冲区为“无”

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)

相关问题 更多 >