Python使用re.search查找文件时打开文件时返回没有该文件或目录

3 投票
4 回答
6428 浏览
提问于 2025-04-17 07:12

我想在很多文件夹里打开一个特定的文件,这个文件的名字是以 '.alleles.txt' 结尾的。我搜索这个文件的时候找到了它,但当我尝试打开它时却出现了:

IOError: [Errno 2] 没有这样的文件或目录: 'abca3.alleles.txt'

这让我很困惑。

for eachfile in filelisting:                       
    if re.search('\.alleles\.txt$', eachfile):
        allelesfile = open(eachfile, 'r')
        print '2'   

目录是通过以下方式指定的:

folder = 'E:\\All Data'
folderlisting = os.listdir(folder) 

for eachfolder in folderlisting:
    print eachfolder 
    if os.path.isdir(folder + '\\' + eachfolder):
        filelisting = os.listdir(folder + '\\' + eachfolder)

4 个回答

1

你是怎么得到 filelisting 的?如果你用了 filelisting = os.walk(directoryname) 这行代码,那它会返回一个特别的元组。你看过这个元组吗?

另外,filelisting 里面有文件的完整路径吗?如果这些文件在一个和脚本不在同一个目录的地方,比如说它们存储在 directoryname 这个变量里,你需要这样打开它们:

allelesfile = open(directoryname + "\\" + eachfile, 'r')

在你提供更多信息之前,我们无法给出更多的帮助(比如实际的 filelisting 值等)。

1

这个错误出现是因为程序试图从你运行Python程序的文件夹中打开文件,而不是从文件实际所在的文件夹中打开。

你需要给open函数提供文件的完整路径,也就是包括文件夹名称的路径。

2

你应该使用 glob。试试这个

import glob

files = glob.glob('E:\\All Data\\*\\*.alleles.txt')

撰写回答