ホームページ >php教程 >PHP开发 >Python で Linux システム コマンドを実行する 4 つの方法

Python で Linux システム コマンドを実行する 4 つの方法

高洛峰
高洛峰オリジナル
2016-11-23 13:21:491697ブラウズ

(1) os.system

サブターミナルでシステムコマンドのみを実行しますが、コマンド実行後の戻り情報は取得できません

system(command) -> exit_status
コマンド(文字列)をサブシェルで実行します。

コマンドラインから実行した場合、結果は直接出力されます

>>> os.system('ls')
04101419778.CHM bash ドキュメント メディア py-django ビデオ
11.wmv 書籍 ダウンロード 写真 python
all- 20061022 Desktop Examples project tools

(2) os.popen

このメソッドはコマンドを実行するだけでなく、実行後に情報オブジェクトも返します

popen(command [, mode='r' [, bufsize]] ) -> パイプ
ファイル オブジェクトを返すコマンドとの間のパイプを開きます。

>>>tmp = os.popen('ls *.py').readlines()
>>> ;tmp
Out[21 ]:
['dump_db_pickle.py ',
'dump_db_pickle_recs.py ',
'db_db_shelve.py ',
'initdata.py ',
'__init__.py ',
'make_db_pickle.py ' 、
'make_db_pickle_recs.py '、
'make_db_shelve.py '、
'peopleinteract_query.py '、
'reader.py '、
'testargv.py '、
'teststreams.py '、
'update_db_pickle.py '、
'writer.py ' ]

利点は、返された結果を変数に代入してプログラムの処理を容易にすることです。

(3) モジュール subprocess を使用します


>>> import subprocess
>>> subprocess.call(["cmd", "arg1", "arg2"],shell=True)

戻り値と出力を取得します: 回import subprocess

p = subprocess.popen ('ls'、shell = true、stdout = subprocess.pipe、stderr = subprocess.stdout)

dout.reamlines ():
Print line,
retval = p.wait()

(4) モジュールコマンドを使用します

>>> インポートコマンド

>>> dir(commands)

['__all__', '__builtins__', ' __file__', '__name__', 'getoutput', 'getstatus','getstatusoutput', 'mk2arg', 'mkarg']
>>> コマンド.getoutput("date")
'6 月 10 日水曜日 19:39 :57 CST 2009'
>>>
>>> コマンド.getstatusoutput("date")
(0, '水 6 月 10 日 19:40:41 CST 2009')

注:実行コマンドのパラメータまたは戻り値に中国語の文字が含まれている場合は、サブプロセスを使用することをお勧めします。 os.popen を使用すると、次のエラーが表示されます:

Traceback (most last call last):

File "./test1.py " 、56行目、inmain()

ファイル「./test1.py」、45行目、main
FAX.sendFax()
ファイル「./mailfax/Fax.py」、13行目、sendFax
os.popen ( cmd)
UnicodeEncodeError: 'ascii' コーデックは位置 46 ~ 52 の文字をエンコードできません: 序数が範囲 (128) を超えていません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。