0

次の名前パターンを持つリモート ファイルから日次ファイル ダンプをダウンロードしようとしています: somename.yyyymmdd_HHmm.zip. yyyymmddは 4 桁の年、2 桁の月、2 桁の日付、HH は 2 桁の時間、最後の mm は 2 桁の分です。ファイルが今日生成された場合、somename.20120416_0423.zip. 「_0423」は、ダンプが午前 4 時 23 分または午前 4 時 12 分に終了したかどうかによって、0412 になることもあります。

私の質問は、正規表現を使用して、上記のことを知ってこのファイルをダウンロードするにはどうすればよいでしょうか? それとももっと良い方法がありますか?

import urllib2

ref = regexedFilename # this would be the (sort of) unknown file name
f = urllib2.openfile(ref)
4

2 に答える 2

0

リモートサイトにディレクトリリストがないと、ブルートフォースを使用してファイル名を見つけない限り不可能です。

ディレクトリリストが利用可能な場合は、ディレクトリインデックスページを開き、BeautifulSoupを使用して解析し、ファイルのリストを抽出してから、正規表現を使用して、探している形式に一致するものを見つけます。

于 2012-04-16T20:09:27.497 に答える
0

ディレクトリの一覧が表示され、とにかく正規表現を使用する必要があると仮定すると、BeautifulSoup で時間を無駄にする理由はありません。

import re
file_list = re.findall('.*?\.(\d+)_(\d+)\.zip', directory_page_text)
sorted_file_list = sorted(file_list, key=lambda x: (x[0], x[1]))

もちろん、ディレクトリ リストの実際の出力がどのように見えるかに応じて、これを微調整する必要がある場合があります。

于 2012-04-16T22:10:33.013 に答える