1

アーカイブ内のログ ファイルを解析するための検索スクリプトを作成していますが、他にリソースが見つからない 1 つの特定の問題に行き詰まっています。

この文字列の「id1」を「何か」に置き換える必要があります。簡単に言えば、パス内の特定の場所にあるものをスクリプトに取得させたいのです。これは、logZip を 1 つの巨大な正規表現として使用することによってのみ可能ですか?

logZip = ("c:/logs/" + str(id1) + "/" + str(id2) + "/" + str(id1) + "_log_" + str(dateID) + "_" + str(hourID) + "-00_" + str(id2) + ".zip")

要求に応じて、定義したいサンプル パスとファイルを追加します。

c:/logs/aaa1/sss2/aaa1_log_2013-01-14-13-00_sss2.zip
c:/logs/aaa2/sss2/aaa2_log_2013-01-14-13-00_sss2.zip
c:/logs/aaa3/sss2/aaa3_log_2013-01-14-13-00_sss2.zip

次のステップは、sss2 部分で同じものを作成することです。

4

1 に答える 1

3
import glob
import os

id1 = '*'
logZip = glob.glob(os.path.join("c:/logs", id1, id2, '{}_log_{}_{}-00_{}.zip'.format(id1, dateID, hourID, id2)))

id1をワイルドカードに置き換えたファイルへの完全なパスのリストを返します*

os.path.joinパスの構築をより明確にします。

logZip単一のファイルでなければならない場合はglob.iglob、イテレータを返すを使用できます。

id1 = '*'
mask = os.path.join("c:/logs", id1, id2, '{}_log_{}_{}-00_{}.zip'.format(id1, dateID, hourID, id2))
for logZip in glob.iglob(mask):
    # logZip is a single file
于 2013-01-14T07:54:43.020 に答える