我想列出所有.pdb文件和.ent文件并执行脚本并打印序列,但似乎程序运行不正常并且没有向我显示任何结果。代码是
import os
path="c:/pdb"
dirs=os.listdir(path)
for file in dirs:
list1=[]
for lines in file:
list=lines.split()
id=list[0]
if id=='ATOM' or id=='HETATM':
if list[4]=='A':
if list[2]=='C4':
list1.append(list[3])
print("The sequence is:" ,list1)
答案 0 :(得分:1)
在Windows上工作,您可以尝试使用转义反斜杠指定路径。
import os
path = "c:\\pdb"
for file in os.listdir(path):
list1 = []
for lines in open(file):
list = lines.split()
idl = list[0]
if (idl == 'ATOM' or idl == 'HETATM') and list[4]=='A' and list[2]=='C4':
list1.append(list[3])
print("The sequence is:", list1)
此外,if
已被折叠,但他们做同样的事情。过深的压痕会妨碍可读性。
答案 1 :(得分:0)
os.listdir返回一个字符串列表[1],这样你就无法对#34;中的行进行操作"在他们身上(这样做,你只是遍历文件名字符串,而不是文件内容)。您可以使用os.walk()[2],例如:
import os
path = 'c:/pdb'
for dirpath, dirnames, fnames in os.walk(path):
for fname in fnames:
if fname.endswith('txt'):
with open(os.path.join(dirpath, fname)) as fp:
for line in fp:
<program logic here>
另外请记住不要使用&#34; list&#34;等保留字。或&#34; id&#34; - 检查一下docs.python.org/3.3/reference/lexical_analysis.html#keywords