我有一个需要分析的输入文件(这是一个包含4帧的轨迹文件),并且每个帧都包含一个for循环,并创建一个临时文件,然后进行计算。计算结果和来自输入文件的一些信息将被写入输出文件。这是我的代码。 “溶剂”和“引用”是包含数字的列表的名称。这些列表的内容在out文件中是必需的。
with open(infile, 'rb') as fi:
with open(outfile,'a') as fj:
fj.write('C, O, C-O distance, q, hbond')
fj.write('\n')
for frame in range(fr+1):
fj.write(str(frame))
fj.write('\n')
chunk = list(islice(fi, nlines))
#writes the snapshot's coordinate in a temporary file 'frame.gro'
with open('frame.gro', 'w') as out:
for line in chunk:
out.write(line)
with open("frame.gro", 'r') as f:
o = np.genfromtxt("frame.gro", dtype=None, skip_header=2, usecols=(0,1,3,4,5), max_rows=atoms) #this is line 182
# obtain info, then do calcs ...
for n in range(len(solvent)):
for i in range(len(refpts)):
#calcs, add items to lists, etc
fj.write(str(refpts[i]))
# ...rest of the code
一切正常,直到我添加了包含“ fj”的每一行。发生此错误:
回溯(最近通话最近): 文件“ script.py”,第182行,在 o = np.genfromtxt(“ frame.gro”,dtype = None,skip_header = 2,usecols =(0,1,3,4,5),max_rows = atoms) genfromtxt中的文件“ /usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py”,行1707 下一个(fhd) StopIteration
我该怎么办?
编辑:更改标题中的一个词 编辑#2:包含错误的实际行
答案 0 :(得分:0)
扩大我的评论
with open("frame.gro", 'r') as f:
o = np.genfromtxt("frame.gro", dtype=None, skip_header=2, usecols=(0,1,3,4,5), max_rows=atoms) #this is line 182
# obtain info, then do calcs ...
为什么您打开frame.gro
,但不使用打开的文件? genfromtxt
行使用文件名,而不使用f
。我不知道该多余的开口是否会导致错误,但这确实暗示了一些草率的思考和/或测试。
如果我尝试将genfromtxt
应用于行太少的文件,而对skip
太少的文件,则会出现StopIteration错误。错误行号不同,但这可能是因为我使用的是其他Py3 numpy。
您需要检查新编写的frame.gro
并确保其符合genfromtxt
中的假设-大小,内容等。