私は3つのことを行うには、私が書いているのPython 3のスクリプトを持っていますそれらがダウンロードされた後のファイル。まだダウンロードされていないファイルを解凍しようとしているのはなぜですか?</p> <p>1)データファイルは 2をダウンロードすることになっているRetrosheetsを決定し)wgetの作成は、それら 3)解凍したファイルを検索し、ダウンロードするためのコマンド:
Pythonコンソールで各機能をテストする際には問題ありません。しかし、すべてを自動的に処理しようとすると、次の出力が得られます。
Start Decade: 1930
End Decade: 1950
Creating wget commands...
Commands created...
Downloaded 3 files.
Unzipping files...
Traceback (most recent call last):
File "import_pbp.py", line 54, in <module>
unzip_data(decade_files)
File "import_pbp.py", line 39, in unzip_data
with zipfile.ZipFile('zip' + file, 'r') as zip_ref:
File "/usr/local/Cellar/python3/3.5.2_1/Frameworks/Python.framework/Versions/3.5 /lib/python3.5/zipfile.py", line 1009, in __init__
self.fp = io.open(file, filemode)
FileNotFoundError: [Errno 2] No such file or directory: 'zip1930seve.zip'
ファイルは、この出力後にコンソールにダウンロードされます。これは、ファイルがダウンロードされる前にunzip関数が実行されていることを示しているようです。解凍機能が呼び出される前にファイルがダウンロードされていることを確認するにはどうすればよいですか?以下のコード:
ダウンロード機能:
# define function to execute the download commands
def download_data(commands):
for command in commands:
os.popen(command)
print('Downloaded ' + str(len(commands)) + ' files.')
解凍機能:
# Unzip the data files into the 'unparsed' folder.
def unzip_data(file_list):
print('Unzipping files...')
for file in file_list:
with zipfile.ZipFile('zip' + file, 'r') as zip_ref:
zip_ref.extractall('unparsed/')
print(file + ' unzipped')
print('All files unzipped...')
編集:私は、応答in this threadに見えたが、それはかなりtdelaneyは下記行ったように私が必要かを説明しませんでした。彼らは似ていますが、私の目的では違います。特に、その質問は6歳であり、私はそれ以降、言語に大きな変化があったと推測しています。
編集2:投稿を短縮するために必須ではないコードを削除しました。
可能性のある重複したように、その機能を再実装したと仮定すると。コマンドが完了するまで待つ(http://stackoverflow.com/questions/2837214/python-popen-command-wait-until-the-command-is-finished) – glibdud
'os.popen()'コマンドは、終了するまで待ってから戻る。 – glibdud