我有一个我保存的文件名列表,如下所示:
filelist = os.listdir(mypath)
现在,假设我的一个文件类似于“KRAS_P01446_3GFT_SOMETHING_SOMETHING.txt
”。
但是,我提前知道的是我有一个名为“KRAS_P01446_3GFT_*
”的文件。如何仅使用“KRAS_P01446_3GFT_*
”从文件列表中获取完整文件名?
作为一个更简单的例子,我做了以下内容:
mylist = ["hi_there", "bye_there","hello_there"]
假设我有字符串"hi"
。我如何让它返回mylist[0] = "hi_there"
。
谢谢!
答案 0 :(得分:2)
在第一个示例中,您可以使用glob
模块:
import glob
import os
print '\n'.join(glob.iglob(os.path.join(mypath, "KRAS_P01446_3GFT_*")))
执行此 os.listdir
。
第二个例子似乎与第一个例子有关(X-Y problem?),但这是一个实现:
mylist = ["hi_there", "bye_there","hello_there"]
print '\n'.join(s for s in mylist if s.startswith("hi"))
答案 1 :(得分:0)
如果你的意思是“给我所有以某些前缀开头的文件名”,那么这很简单:
[fname for fname in mylist if fname.startswith('hi')]
如果你的意思更复杂 - 例如,“some _ * _ file”匹配“some_good_file”和“some_bad_file”等模式,那么请查看正则表达式模块。
答案 2 :(得分:0)
mylist = ["hi_there", "bye_there","hello_there"]
partial = "hi"
[fullname for fullname in mylist if fullname.startswith(partial)]
答案 3 :(得分:0)
如果列表不是很大,你可以按照这个项目进行检查。
def findMatchingFile (fileList, stringToMatch) :
listOfMatchingFiles = []
for file in fileList:
if file.startswith(stringToMatch):
listOfMatchingFiles.append(file)
return listOfMatchingFiles
还有更多" pythonic"这样做的方式,但我更喜欢这个,因为它更具可读性。