从文件中读取第一行为字符串的列

时间:2014-07-18 09:16:35

标签: python numpy scitools

我想要的是从.dat文件中读取列。我已经能够使用scitools.filetable.read_columns()执行此操作。我遇到的问题是我的.dat文件的第一行包含strings。我该如何跳过第一行?

因此,对于一个简短的例子,我有以下.dat文件:

a   b   c   d   e
1   3   5   7   9
2   4   6   8  10

从这种类型的.dat文件中,我想为每个列创建数组而不使用string。当.dat文件不包含a,b,c,d,e时,它将非常简单:

import scitools.filetable

fp = open("blabla.dat", "r")

a, b, c, d, e = scitools.filetable.read_columns(fp)

现在a会显示为:[1 2]

但是,当我abcde成为{{{}的一部分时,我尝试做同样的事情1}}文件,如我的示例中所示,.dat不起作用,因为它无法将scitools转换为string。如何在没有第一行的情况下打开文件或创建所需的列?

1 个答案:

答案 0 :(得分:1)

使用fp.next进一步前进一行

由于fp是文本模式下文件打开的文件描述符,因此迭代它会逐行读取它。

您可以让fp进一步读取一行fp.next(),然后将其传递给您的`scitools.filetable.read_colums(fp)

修改后您的代码将如下所示:

import scitools.filetable

fp = open("blabla.dat", "r")
fp.next()

a, b, c, d, e = scitools.filetable.read_columns(fp)

或使用上下文管理器关闭文件:

import scitools.filetable

with open("blabla.dat", "r") as fp:
    fp.next()

    a, b, c, d, e = scitools.filetable.read_columns(fp)