1

次のように保存したファイル名のリストがあります。

filelist = os.listdir(mypath)

ここで、私のファイルの 1 つが " KRAS_P01446_3GFT_SOMETHING_SOMETHING.txt" のようなものだとします。

ただし、事前にわかっているのは、「KRAS_P01446_3GFT_*」というファイルがあることだけです。" "だけを使用してファイルリストから完全なファイル名を取得するにはどうすればよいKRAS_P01446_3GFT_*ですか?

より簡単な例として、次のようにしました。

mylist = ["hi_there", "bye_there","hello_there"]

string があるとします"hi"。どうすれば戻せますかmylist[0] = "hi_there"

ありがとう!

4

4 に答える 4

2

glob最初の例では、次のモジュールを使用できます。

import glob
import os
print '\n'.join(glob.iglob(os.path.join(mypath, "KRAS_P01446_3GFT_*")))

の代わりにこれを行いos.listdirます。

2 番目の例は、最初の例 ( XY 問題?) とはあまり関係がないように見えますが、実装は次のとおりです。

mylist = ["hi_there", "bye_there","hello_there"]
print '\n'.join(s for s in mylist if s.startswith("hi"))
于 2012-07-19T21:21:20.090 に答える
0

リストがそれほど大きくない場合は、このようにアイテムごとのチェックを行うことができます。

def findMatchingFile (fileList, stringToMatch) :
    listOfMatchingFiles = []

    for file in fileList:
        if file.startswith(stringToMatch):
            listOfMatchingFiles.append(file)

    return listOfMatchingFiles

これを行うにはもっと「pythonic」な方法がありますが、読みやすいのでこれを好みます。

于 2012-07-19T21:30:42.550 に答える
0

「プレフィックスで始まるすべてのファイル名を教えてください」という意味の場合、これは簡単です。

[fname for fname in mylist if fname.startswith('hi')]

より複雑なものを意味する場合、たとえば、「some _ * _file」のようなパターンが「some_good_file」および「some_bad_file」と一致する場合は、正規表現モジュールを確認してください。

于 2012-07-19T21:20:49.567 に答える
0
mylist = ["hi_there", "bye_there","hello_there"]
partial = "hi"
[fullname for fullname in mylist if fullname.startswith(partial)]
于 2012-07-19T21:21:11.520 に答える