3

'.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

4 に答える 4

2

を使用する必要がありますglob。これを試して

import glob

files = glob.glob('E:\\All Data\\*\\*.alleles.txt')
于 2011-11-28T08:47:04.277 に答える
1

どうやって入手したのfilelisting?使用した場合はfilelisting = os.walk(directoryname)、特別なタプルを返します。見ましたか?

そして、filelistingファイルのフルパスが含まれていますか?ファイルがスクリプトディレクトリ以外のディレクトリにある場合、たとえばdirectoryname変数に保存されている場合は、次の方法でファイルを開く必要があります。

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

ここに情報(実際のfilelisting値など)を入力するまで、質問に関する詳細情報を提供することはできません。

于 2011-11-28T08:43:11.033 に答える
1

ファイル名の一部に非 ASCII 文字が含まれている疑いがあります。試す

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

for eachfolder in folderlisting:
    print eachfolder 
    if os.path.isdir(os.path.join(folder,eachfolder)):
        filelisting = os.listdir(os.path.join(folder,eachfolder))

u'...'プレフィックスに注意してください。それがないと、os.listdir()ファイル名の非 ASCII 文字を静かに削除または ASCII 化する可能性があり、もちろん無効なファイル名につながります。この質問も参照してください。

これは、次のドキュメントにos.listdir(path)記載されています。

Windows NT/2k/XP および Unix では、pathが Unicode オブジェクトの場合、結果は Unicode オブジェクトのリストになります。デコードできないファイル名は、引き続き文字列オブジェクトとして返されます。

于 2011-11-28T08:45:09.803 に答える
1

エラーが表示されるのは、python プログラムを実行しているディレクトリからファイルを開こうとしているからです。ファイルが存在するディレクトリではありません。

openファイルへのフル パス (ディレクトリ名を含む) を指定する必要があります。

于 2011-11-28T09:40:51.430 に答える