サブプロセスコールを作成して、ORIGというフォルダのディレクトリ構造を取得したいとします。ここでなぜこのサブプロセス呼び出しの出力をPythonで読むことができませんか?
は私のコードです:私はそれを開いたとき、私はから、OutputFile.txtファイルの内容を見ると
import os
from subprocess import call
# copy the directory structure of ORIG into file
f = open("outputFile.txt","r+b")
call(['find', './ORIG', '-type', 'd'], stdout=f)
a = f.read()
print(a)
コールコマンドは、働いている:
./ORIG
./ORIG/child_one
./ORIG/child_one/grandchild_one
./ORIG/child_two
しかし、なぜ私はこれを読むことができない/出力を印刷する?
Luke.pyの提案によると、私はまた、次のことを試してみました:
import os
import re
from subprocess import call, PIPE
# copy the directory structure of ORIG into file
# make directory structure from ORIG file in FINAL folder
process = call(['find', './ORIG', '-type', 'd'], stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()
if stderr:
print stderr
else:
print stdout
をこれは私にoututを与える:
Traceback (most recent call last):
File "feeder.py", line 9, in <module>
stdout, stderr = process.communicate()
AttributeError: 'int' object has no attribute 'communicate'
私はあなたの提案を試み、それは私にエラーを与えました - 私は私の質問を更新しました。 –
subprocess.Popenを代わりに使用しようとしました - 編集された答え –
それはトリック、ありがとうでした。なぜPythonが元のコードで正常に書いたtxtファイルを読むことができないのか説明できるなら、それも役に立ちます。 –