我用Python编写了以下程序:
import re
import os
import string
folder = 'C:\Users\Jodie\Documents\Uni\Final Year Project\All Data'
folderlisting = os.listdir(folder)
for eachfolder in folderlisting:
print eachfolder
if os.path.isdir(folder + '\\' + eachfolder):
filelisting = os.listdir('C:\Users\Jodie\Documents\Uni\Final Year Project\All Data\\' + eachfolder)
print filelisting
for eachfile in filelisting:
if re.search('.genbank.txt$', eachfile):
genbankfile = open(eachfile, 'r')
print genbankfile
if re.search('.alleles.txt$', eachfile):
allelesfile = open(eachfile, 'r')
print allelesfile
它会查看很多文件夹,并打印以下内容:
代码一直有效,直到它到达某个目录,然后失败并出现以下错误:
Traceback (most recent call last):
File "C:\Users\Jodie\Documents\Uni\Final Year Project\Altering Frequency Practice\Change_freq_data.py", line 16, in <module>
genbankfile = open(eachfile, 'r')
IOError: [Errno 2] No such file or directory: 'ABP1.genbank.txt'
问题是:
这让我觉得它不是文件夹或其中的任何文件,而是Python的一些限制?我不知道。它困扰了我。
任何帮助都将不胜感激。
答案 0 :(得分:0)
你应该使用os.walk()http://docs.python.org/library/os.html#os.walk
另外,您需要读取文件的内容,您不想打印文件对象。并且您需要在完成后关闭文件或使用上下文管理器为您关闭它。
看起来像是:
for root, dirs, files in os.walk(folder):
for file_name in files:
if re.search('.genbank.txt$', file_name) or \
re.search('.alleles.txt$', file_name):
with open(os.path.join(root, f), 'r') as f:
print f.read()
请记住,这不是'完全'你正在做什么,这将走遍整个树,你可能只想走一个像你已经做的那样的水平。