Readline函数返回第一行

时间:2017-07-17 11:17:38

标签: python

相对缺乏经验的Python用户,我试图将 readline 函数用于项目,以便读取 .xyz 文件的特定行。

但是,无论我输入的 readline 函数的参数是什么,它都系统地返回第一行。

知道可能导致这种情况的原因,以及如何解决这个问题?

这是 cube.xyz 文件:

4  

'Cu' 0.0 0.0 0.0 0.5  
'Ag' 0.0 0.0 1.0 0.5  
'Ag' 0.0 0.0 2.0 0.5  
'Cu' 0.0 0.0 3.0 0.5

一些代码应该读取它:

def swapfunction ():
    inp = open('cube.xyz', 'r+')
    print inp.readline(3)

swapfunction()

返回:

>>> 4

谢谢!

2 个答案:

答案 0 :(得分:0)

def swapfunction():
    with open('cube.xyz', 'r+') as inp:
        lines = inp.readlines()

然后您在列表中有lines,您可以自由索引。

或者,如果您有一个大文件,则可以使用itertools.islice

import itertools

def swapfunction():
    with open('cube.xyz', 'r+') as inp:
        index = 3
        line = next(itertools.islice(inp, index, index + 1))

答案 1 :(得分:0)

inp.readline(n)返回整行,或当前行中的字节数,以较小者为准。如果你想按字节读取,我建议你使用inp.read(n)。或者,使用inp

上的循环
def swapfunction ():
    inp = open('cube.xyz', 'r+')
    for line in inp:
        print line,

swapfunction()

输出:

4  

'Cu' 0.0 0.0 0.0 0.5  
'Ag' 0.0 0.0 1.0 0.5  
'Ag' 0.0 0.0 2.0 0.5  
'Cu' 0.0 0.0 3.0 0.5