1

そのため、フォルダー内の一連のファイルをループするスクリプトがあります。特定のディレクトリ内のファイルのリストを取得した後、スクリプトで使用するファイルを指定するにはどうすればよいですか?

target = './directory/'

for file in listdir(target):

現在、同じフォルダーにいくつかの異なるファイルがあります。

  • kplr006933899 -2009131105131_llc .fits _
  • kplr006933899-2009131105131_ lpd-targ .fits
  • kplr006933899-2012151031540_slc.fits _ _
  • kplr006933899-2012151031540_ spd-targ .fits

それらはすべて、「kplr006933899」で示される同じグループの一部です。ループするファイルを指定するために、文字列の一部を別の変数として指定するにはどうすればよいですか?

たとえば、次のようにします。

def function(name,types)

呼び出されたときにどこに書くことができますか:

function(kplr006933899,[slc,llc])
4

2 に答える 2

3

これには複数の方法があります。最初の方法:

import fnmatch

def my_function(name, types):
    result = []
    for t in types:
        pattern = "{}*{}.fits".format(name, t)
        for filename in fnmatch.filter(listdir(target), pattern):
            result.append(filename)
    return result

この関数は次のように呼び出すことができます: my_function("kplr006933899", ["slc", "llc"]). このfnmatch.filter関数は、パターンと指定されたファイル名でパターン マッチングを実行します。

2 番目の方法は、次を使用することglobです。

result = []
for t in types:
    result.extend(glob.glob("{}/{}*{}.fits".format(target, name, t)))
return result
于 2013-02-03T20:19:50.807 に答える
0
>>> "kplr" in  "kplr006933899-2009131105131_llc.fits"
True
>>> 
>>> "kplR" in  "kplr006933899-2009131105131_llc.fits"
False
>>> 

string を表すには引用符を付ける必要があることに注意してください。function("kplr006933899", [slc, llc])そうしないkplr006933899と、変数として解釈されます。

于 2013-02-03T20:14:10.310 に答える