Pythonを使用してOSシェルと対話するにはどうすればよいですか? pythonを介してwindows cmdコマンドを実行したいです。どうすれば達成できますか?
新しいsubprocess.check_output
および同様のコマンドは、os.system
を置き換えることになっています。詳細については、 このページ を参照してください。 Windowsでこれをテストすることはできませんが、次のように動作するはずです。
from subprocess import check_output
check_output("dir C:", Shell=True)
check_output
は、コマンドからの出力の文字列を返します。または、subprocess.call
はコマンドを実行し、コマンドのステータスを返します(すべてが正常な場合は通常0)。
また、python 3では、その文字列出力がbytes
出力になっていることに注意してください。これを文字列に変更する場合は、次のようなものが必要です。
from subprocess import check_output
check_output("dir C:", Shell=True).decode()
必要に応じて、 伝えることができます プログラム出力のエンコードの種類。デフォルトはutf-8
で、通常は正常に機能しますが、他の標準オプションは here です。
Osモジュール システムメソッド を使用します。
コマンドの文字列形式で入力するだけで、戻り値はWindows環境変数COMSPECです
例えば:
os.system( 'python')はWindowsコマンドプロンプトを開き、pythonインタープリターを実行します
出力と戻りコードを取得する@ srini-beergeの回答のリファクタリング
import subprocess
def run_win_cmd(cmd):
result = []
process = subprocess.Popen(cmd,
Shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
for line in process.stdout:
result.append(line)
errcode = process.returncode
for line in result:
print(line)
if errcode is not None:
raise Exception('cmd %s failed, see above for details', cmd)
次のコードでsubprocess
パッケージを使用できます。
import subprocess
cmdCommand = "python test.py" #specify your cmd command
process = subprocess.Popen(cmdCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
print output
import subprocess
result = []
win_cmd = 'ipconfig'(curr_user,filename,ip_address)
process = subprocess.Popen(win_cmd,
Shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE )
for line in process.stdout:
print line
result.append(line)
errcode = process.returncode
for line in result:
print line