打开文件列表并执行脚本

时间:2017-06-23 19:40:45

标签: python

我想列出所有.p​​db文件和.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)

2 个答案:

答案 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

[1] https://docs.python.org/3/library/os.html#os.listdir

[2] https://docs.python.org/3/library/os.html#os.walk