读取python中的选项卡式文件

读取python中的选项卡式文件,python,file-io,Python,File Io,我在一个.txt文件中有如下整数数据 600 17 3488541 601 21 6523232 602 18 6565444 603 23 6655656 事情就是这样。文件相当大。在一个特定的程序中,我需要将一行中的每个值转换成一个整数变量,然后使用它,然后使用下一行中的值,依此类推 我已经学习了很多教程,但是没有任何东西解释如何达到我的目的 具体来说,这就是我所需要的。我有三个变量,比如a,b和c。 所有这3个变量都在while循环中初始化。在while循环的第一次执行中

我在一个.txt文件中有如下整数数据

600  17  3488541
601  21  6523232
602  18  6565444
603  23  6655656
事情就是这样。文件相当大。在一个特定的程序中,我需要将一行中的每个值转换成一个整数变量,然后使用它,然后使用下一行中的值,依此类推

我已经学习了很多教程,但是没有任何东西解释如何达到我的目的

具体来说,这就是我所需要的。我有三个变量,比如
a
b
c
。 所有这3个变量都在
while
循环中初始化。在while循环的第一次执行中,值必须为:

a=600
b=17
c=3488541
在第二次执行中,必须:

a=601
b=21
c=6523232
……等等。我怎么做?我是Python的初学者。工作平台是Linux

with open('file.txt') as f:
   for line in f:
      a, b, c = map(int, line.split())
      ...
但是,您可能会发现将项目留在列表中更容易。例如,如果您要将它们相加或进行其他操作,则执行<代码>求和(列表)比执行<代码>a+b+c更容易,如果您需要将其用于包含三个以上字段的文件,则可以更好地进行缩放。对于这类事情,只需执行以下操作:

with open("filename.txt") as input_file:
    for line in input_file:
        numbers = map(int, line.split())
        print sum(numbers)   # or whatever

带有制表符分隔值的文件只是经典文件的一种方言,其中分隔符是制表符(
\t

令人高兴的是,Python附带了一个理解s的

您应该使用它(并为您的值指定比
a、b、c
更合适的名称)

例子: 运行:

% ./integers.py   
600 17 3488541
601 21 6523232
602 18 6565444
603 23 6655656
另一种解决办法

lines = open('data.txt').read().splitlines()
lines = [map(int, i.split()) for i in lines]
for a,b,c in lines:
    print a,b,c

您可以使用csv模块:

import csv
fcont = csv.reader(open("file_path"), delimiter="\t") #tab separated
for (row, (a, b, c)) in enumerate(fcont): #a b c are strings. you can map(int, (a, b, c))
    do_something(a, b, c)
f = open("file_path")
fcont = f.read().splitlines(); f.close()
for (row, rcont) in fcont:
    (a, b, c) = rcont.split("\t") #tab separated #you can map(int, (a, b, c))
    do_something(a, b, c)
没有csv模块:

import csv
fcont = csv.reader(open("file_path"), delimiter="\t") #tab separated
for (row, (a, b, c)) in enumerate(fcont): #a b c are strings. you can map(int, (a, b, c))
    do_something(a, b, c)
f = open("file_path")
fcont = f.read().splitlines(); f.close()
for (row, rcont) in fcont:
    (a, b, c) = rcont.split("\t") #tab separated #you can map(int, (a, b, c))
    do_something(a, b, c)

你试了什么?上的文档给出了几个具体的例子。我会将
从列表转换为生成器,因为OP表示该文件非常大。我同意,我认为@kindall的答案在性能方面效果更好。