【发布时间】:2017-02-23 18:12:52
【问题描述】:
执行下面的脚本时,我得到:
ValueError:混合迭代和读取方法会丢失数据
我知道这是因为 num 在第一个 for 循环中,而 last_host 是 num 的依赖项,但我不知道如何解决这个问题。
#!/usr/bin/env python2
import datetime as dt
import glob as glob
import os as os
import shutil as shutil
import signal as signal
import subprocess as sp
import sys as sys
# Open PDB file and read coordinates
pdb_file = open('align_z.pdb', 'r')
new_pdb_file = open('vac.pdb', 'w')
#Get last host atom
for num, line in enumerate(pdb_file, 1):
if "L01" in line:
print num
break
last_host=int(num)
print(last_host-1)
for atom in range(0, last_host-1):
data = pdb_file.readline()
new_pdb_file.write(data)
【问题讨论】:
-
更多 Pythonic
last_host = next((num for num, line in enumerate(pdb_file, 1) if "L01" in line), len(list(pdb_file)))。为您节省 4 行代码。 -
谢谢,但这并没有让我看到包含 L01 的第一行,而是最后一行。我需要找到第一行写着 L01
-
不,应该可以。如果你得到最后一个没有包含
"L01"的行。