PYTHON - 从文件中读取单行

标签 python io

我是几个小时的 python 新手,我正在尝试编写一个脚本,该脚本从一个文件(名为“peaks.dat”)中读取一组 x、y 坐标并将它们填充到一个列表(类类型);我正在定义以下内容:

class point():
    def _init_(self,x=None,y=None,k=None,f=None):
        self.x=0    # x coordinate
        self.y=0    # y coordinate
        self.k=0    # I need these for later stuff
        self.f=-1   # I need these for later stuff

但后来我找不到任何方法从文件中的一行(即,仅来自两列之一的元素)而不是整行“挑选”单个元素。有这种事吗?

无论如何,我尝试将我的列拆分为两个不同的文件 x.dat 和 y.dat,但后来我完全不知道如何从文件中分别填充我的“点”类型列表的 x 和 y 字段。 我试过了

f=open('x.dat','r')
mylist=[]
for line in f:
    mylist.append(point(line, , , )) # wrong syntax D:
f.close()

for data in mylist:
    print i.x

计划稍后对 y.dat 文件进行相同的处理,但在很多层面上似乎都是错误的。

附注如果你想举个例子,我来自一些 C++。

编辑:peaks.dat 只是三列(我只需要前两列)数字,类似于

1.2   1.6   0.4
1.5   2.1   0.3
1.1   1.0   0.5

等等

x.dat(或 y.dat)是单行数字。

最佳答案

根据文件的格式,您可以使用 csv 模块,或者使用 str.split() 函数。

对于一行中以空格分隔的值,使用 str.split():

points = []

with open(inputfilename) as infile:
    for line in infile:
        row = [int(i) for i in line.split()]
        # row is now a list of integers.
        points.append(point(*row))

对于其他格式,通常是 csv module是最好的选择:

import csv

points = []

with open(inputfilename, 'rb') as infile:
    reader = csv.reader(infile, delimiter='\t')  # tab delimited file
    for row in reader:
        row = [int(i) for i in row]
        # row is now a list of integers.
        points.append(point(*row))

要只读取两行,请使用 next() 两次; csv 版本:

    for _ in range(2):
        row = [int(i) for i in next(reader)]
        # row is now a list of integers.
        points.append(point(*row))

next() 从迭代器中获取下一项; infile 对象和 reader 对象都是生成文件行或 CSV 行的迭代器。

或者,使用 itertools.islice() utility :

for row in islice(reader, 2):  # only yield the first two rows.

关于PYTHON - 从文件中读取单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17148489/

相关文章:

Java I/O 消耗更多 CPU 资源

Python:如何使用 PIL 模块调整图像大小

python - 管理(和重命名)类组合的实例变量

c - 不断写入文件是否会损害程序的性能?

Java 8 的 Files.lines() : Performance concern for very long line

c - C中最多输入256个字符

python - Pandas 对行进行序列字符串匹配并获取最佳匹配行 ID

python - Neo4J 通过索引中节点的最短路径

python - Beautifulsoup : Difference between . find() 和 .select()

python - 如何左对齐 pandas `to_string()` 中的列值?