相对缺乏经验的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
谢谢!
答案 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