ホームページ  >  記事  >  バックエンド開発  >  Pythonでシステムコマンドを実行する方法を詳しく解説

Pythonでシステムコマンドを実行する方法を詳しく解説

巴扎黑
巴扎黑オリジナル
2017-09-16 10:07:091554ブラウズ

最近、そのテストフレームワークに取り組んでいたときに、Pythonでシステムコマンドを実行することにあまり慣れていないことがわかったので、次の記事では主にPythonでシステムコマンドを実行する方法を紹介します。必要に応じて参照してください。以下を見てみましょう。

はじめに

Python は、他のプログラム上で簡単に操作でき、他の言語で書かれたライブラリを簡単にラップできるため、よく「接着言語」と呼ばれます。 Python/wxPython環境において、Pythonプログラム内で外部コマンドを実行したり、別のプログラムを起動したりする方法。

この記事では、Python でシステム コマンドを実行する方法に関する関連情報を詳しく紹介します。以下では多くを説明しません。詳細な紹介を見てみましょう。

(1) os.system()

このメソッドは、標準の C system() 関数を直接呼び出します。この関数は、サブ端末でシステム コマンドを実行するだけであり、実行を取得できません。情報を返します。 system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息。


>>> import os 
>>> output = os.system('cat /proc/cpuinfo') 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> output # doesn't capture output 
0

(2) os.popen()

这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。


>>> output = os.popen('cat /proc/cpuinfo') 
>>> output 
<open file &#39;cat /proc/cpuinfo&#39;, mode &#39;r&#39; at 0x7ff52d831540> 
>>> print output.read() 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>><span style="font-size:14px;">

(3) commands模块


>>> import commands 
>>> (status, output) = commands.getstatusoutput(&#39;cat /proc/cpuinfo&#39;) 
>>> print output 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> print status 
0

注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。

注意2:当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。

(4) subprocess模块

该模块是一个功能强大的子进程管理模块,是替换os.system, os.spawn*


>>> import subprocess 
>>> subprocess.Popen(["ls", "-l"]) <strong> # python2.x</strong> doesn&#39;t capture output 
>>> subprocess.run(["ls", "-l"])  <strong># python3.x</strong> doesn&#39;t capture output 
<subprocess.Popen object at 0x7ff52d7ee490> 
>>> total 68 
drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents 
drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads 
... ... 
>>>

🎜🎜(2) os.popen()🎜🎜🎜🎜🎜 このメソッドはコマンドを実行し、実行された情報オブジェクトを返し、パイプライン ファイルを通じて結果を返します。 🎜🎜🎜🎜🎜rrreee🎜🎜🎜(3) コマンドモジュール🎜🎜🎜🎜🎜🎜🎜rrreee🎜🎜注 1: 🎜🎜UNIX 風の環境で戻るにはこのメソッドを使用しますsystem 戻り値 (ステータス) がスクリプトまたはコマンドの実行後の戻り値と異なるのは、os.wait() が呼び出されるためです。これには、system wait() の実装を理解する必要があります。正しい戻り値 (ステータス) が必要な場合は、戻り値を 8 ビット右シフトするだけで済みます。 🎜🎜🎜🎜注2: 🎜🎜実行コマンドのパラメータやリターンに中国語が含まれる場合は、サブプロセスの使用を推奨します。 🎜🎜🎜🎜🎜(4) サブプロセスモジュール🎜🎜🎜🎜🎜このモジュールは、os.systemos.spawn* に代わる強力なサブプロセス管理モジュールです。他の方法。 🎜🎜🎜🎜🎜りー

以上がPythonでシステムコマンドを実行する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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