Python のドキュメントによると、subprocess.call
ブロックして、サブプロセスが完了するまで待機する必要があります。このコードでは、コマンド ラインxls
で呼び出して、いくつかのファイルを新しい形式に変換しようとしています。Libreoffice
サブプロセス呼び出しの呼び出しがブロックされていると想定しましたが、各呼び出しの後に人為的な遅延を追加する必要があるようです。そうしないと、out
ディレクトリ内のファイルがほとんど失われます。
私は何を間違っていますか?なぜ遅延が必要なのですか?
from subprocess import call
for i in range(0,len(sorted_files)):
args = ['libreoffice', '-headless', '-convert-to',
'xls', "%s/%s.xls" %(sorted_files[i]['filename'],sorted_files[i]['filename']), '-outdir', 'out']
call(args)
var = raw_input("Enter something: ") # if comment this line I dont get all the files in out directory
EDIT以下のコメントから答えを見つけるのは難しいかもしれません。私unoconv
は、ブロッキングでスクリプトからの操作が簡単なドキュメント変換に使用しました。