循环遍历文件夹?

时间:2016-05-14 02:20:51

标签: python

我正在研究一个二级项目,该项目正在搜索蛋白质数据库中与特定条件匹配的肽。

我有一个包含大部分.pdb文件的文件夹,我的游戏计划是在桌面上设置此文件,然后使用for循环扫描该文件夹中的所有文件并存储所有必要的数据。然而,我在进口阶段停滞不前。文件/目录无法识别。我附上下面的违规代码:

import os
# - - - - -
#Sector C - Iteration through a folder containing all .pdb files. 
for fi in os.listdir('C:/Users/David/Desktop/pdb_Files'):
    if os.path.isfile(os.path.join('C:/Users/David/Desktop/pdb_Files',  fi)):        
    listatom,R3_coordinates,posg=[],[],[]
    for line in open(fi): # < - - - Issue occurring here.
        ist = line.split()
        id = ist[0]
        if id == 'ATOM':
            typ = ist[2]
            if Peptide1 == 'PRO':
                if typ == 'CA':
                    res,toc,ac=ist[3:6]
                    pos = [float(i) for i in ist[6:9]]
                    if ac >= '0':
                        listatom.append([int(ist[1]),typ,res,toc,ac,np.array(pos)])
                        R3_coordinates.append([int(ist[1]),np.array(pos)]) #List of ALL coordinates.
                    if Plot == True:
                        posg.append(pos)

所有帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

这是python。在你写一些内容来获取目录中的所有文件之前,请考虑这是否是其他人之前处理过的常见问题。

import glob
print glob.glob("C:/Users/David/Desktop/pdb_Files/*.pdb")
#this returns ["C:/Users/David/Desktop/pdb_Files/file1.pdb", "C:/Users/David/Desktop/pdb_Files/file2.pdb", ...]

glob模块允许您对目录中的文件进行通配符匹配,因此上面的行返回pdb_Files文件夹中以.pdb结尾的所有文件的列表。

答案 1 :(得分:1)

您需要提供open的完整路径:

path = os.path.join('C:/Users/David/Desktop/pdb_Files',  fi)
if os.path.isfile(path):        
    listatom,R3_coordinates,posg=[],[],[]
    for line in open(path):