1. sys モジュールの紹介
前に紹介した os モジュールは主にオペレーティング システム用ですが、この記事の sys モジュールは主に Python インタープリタ用です。
sys モジュールは Python に付属するモジュールで、Python インタープリタと対話するためのインターフェイスです。 sys モジュールは、Python ランタイム環境のさまざまな部分を処理するための多くの関数と変数を提供します。
2. sys モジュールの一般的なメソッド
dir() メソッドを通じて sys モジュールにどのメソッドが含まれているかを確認できます:
1 2 3 | import sys
print (dir(sys))
|
ログイン後にコピー
1.sys.argv - コマンド ライン パラメータの取得
sys.argv は、プログラムの外部からプログラムにパラメータを転送するために使用され、コマンド ライン パラメータのリストを取得できます。 。 argv リストには、スクリプトに渡されるすべてのパラメータが含まれます。
- sys.argv[0]: プログラム自体を表します。
- sys.argv[1]: プログラムの最初のパラメータを表します。プログラム
- sys.argv[2]: プログラムの 2 番目のパラメータを示します。
1 2 3 4 | import sys
for index, arg in enumerate(sys.argv):
print (index, arg)
|
ログイン後にコピー
このスクリプト ファイルを Python コマンド ラインで (パラメータなしで) 実行し、2 番目のパラメータを取得します。パラメータ 1 つの要素はスクリプト自体です。出力結果は次のようになります。

#このスクリプト ファイル (パラメータ付き) を Python コマンド ラインで実行すると、取得される最初の要素がスクリプト自体になります。残りは渡されるパラメータです。出力結果は次のようになります。

#2.sys.exit(n) - プログラムを終了します
sys.exit() 基本原則
sys.exit(n):
n が 0 の場合: 正常終了 n が 0 に等しくない場合、異常終了により SystemExit Exception がトリガーされます
通常の状況では、プログラムが最後まで実行されると、インタープリタは自動的に終了します。このとき、コード内では sys.exit(0) は呼び出されませんが、実際の Python インタープリターは実行時に sys.exit(0) を呼び出します。実行後、PyCharm エディターは自動的に「終了コード 0 でプロセスが終了しました」というプロンプトを表示します。

コード内で sys.exit(888) が呼び出されるとき、つまり 0 以外の整数が渡されるとき、 PyCharm エディターは、「プロセスは終了コード 888 で終了しました」というプロンプトは次のようになります。

そして、sys.exit(n) が呼び出されるとき、コードでは、n が 0 に等しいかどうか、つまり正常に終了したか異常終了したかに関係なく、プログラムが終了することを意味します。その後のステートメントは実行されません。つまり、文「print(」Python sys.exit () 使用例「)」は実行されません。また、以下の図から、sys.exit(888) 以降のステートメントが PyCharm エディターで黄色で強調表示されており (文法が正常であれば強調表示されません)、実行結果では sys ステートメントが実行されないことがわかります。 .exit(888) の後:

#sys.exit() 該当するシナリオ - 制御プログラムが途中で終了する
一般的な状況次に、実行がメインプログラムの最後に達すると、インタープリタは自動的に終了します。上記の例では、途中で終了する場合、最初に sys.exit() を呼び出してから他のステートメントを呼び出すと機能せず、エディターが警告することを示しています。
プログラムを途中で終了するかどうかを自由に制御したい場合は、「sys.exit(n) catchException」メソッドを使用できます。このうち、n には整数パラメータまたは文字列パラメータを指定できます。n が 0 以外の値の場合、SystemExit 例外がスローされ、メイン プログラムでキャプチャできます:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # sys. exit ()用法示例
def exit_function(value):
print ( "sys.exit()捕获到的value是%s" % value)
sys. exit (0)
print ( "start sys" )
try :
sys. exit (888)
except SystemExit as value:
exit_function(value=value)
print ( "end sys" )
|
ログイン後にコピー
① プログラムの例途中で終了します
実行結果は次のとおりです:

実行プロセスの分析:
プログラムは最初に print("start sys") を実行します。次に、try ステートメントを実行し、sys.exit(888) を呼び出します。次に、システム例外をキャプチャします。キャプチャされた SystemExit 例外の値は 888 です。 最後に exit_function 関数を呼び出し、値 888 を exit_function 関数に渡します。 exit_function 関数でステートメントを実行し、取得した値を出力し、最後に sys.exit(0) を呼び出します。プログラムを終了する場合
② プログラムを終了しない場合の例
上个示例的执行结果可以看到在exit_function函数中调用sys.exit(0),此时程序就会退出,不会再执行print("end sys"),而当在exit_function函数中注释掉sys.exit(0),则会继续执行最后的代码print("end sys"),即:程序中途不退出,如下所示:

3.sys.platform-获取当前Python运行平台
基本用法
Windows下运行:

Linux下运行:

除了sys.platform外,通过platform.system()也可以获取到当前系统平台:
Windows下运行:

Linux下运行:

适用场景
我们都知道Python是跨平台语言,只要操作系统安装了Python环境,那么同一份Python代码就可以既运行在Linux上,也可以运行在Windows上,亦或是Mac上。
而使用sys.platform或platform.system()获取到当前系统平台名称后,我们就可以针对性地作出不同操作,例如:
1 2 3 4 5 6 7 8 9 | linux_content = "111111"
windows_content = "222222"
# 平台为Linux,执行逻辑1、发送文本1到指定邮件
if platform.system() == "Linux" :
send_email(linux_content)
# 平台为Windows,执行逻辑2、发送文本2到指定邮件
elif platform.system() == "Windows" :
send_email(windows_content)
|
ログイン後にコピー
4.sys.path-返回Python相关路径
基本用法
sys.path是Python的搜索模块的路径集,供Python从中查找模块,返回一个list。

适用场景
如果是在IDE中执行Python程序,编译器会自动把当前项目的根目录加入到包查找路径中,可以理解为添加到环境变量下,所以直接执行是没有问题的。但是在cmd或是Terminal控制台中直接使用Python相关命令来执行程序,则不会自动将当前项目加入到PYTHONPATH环境变量下,如果涉及到import其他文件夹下的变量就会报类似"ModuleNotFoundError: No module named 'xxxx'"这样的错误。
解决方法:通过sys.path.append()方法将当前项目的根目录添加到系统环境变量中:
1 2 3 4 | import sys
root_path = os.path.dirname(os.path. realpath ( __file__ ))
sys.path.append(root_path)
|
ログイン後にコピー
5.sys.stdin与sys.stdout
- Stdin:标准输入
- Stdout:标准输出
- Stderr:错误流
sys.stdin 与 input()
在Python中, input() 等价于 sys.stdin.readline()
① 先来看看使用input()的实现效果
1 2 3 | # sys.stdin 与 input
number = input( "please input a number:" )
print ( "your input number is %s" % (number))
|
ログイン後にコピー
执行效果如下:

② 再来看看使用sys.stdin.readline()的实现效果
1 2 3 | print ( "please input a number:" ,)# 逗号表示不换行
nn = sys.stdin.readline()
print ( "your input number is %s" % (nn))
|
ログイン後にコピー
执行效果如下:

sys.stdout 与 print()
在Python中, print() 等价于 sys.stdout.readline()
① 先来看看使用print()的实现效果
1 2 | # sys.stdout 与 print
print ( "hello world" )
|
ログイン後にコピー
执行效果如下:

② 再来看看使用sys.stdin.write()的实现效果
1 | sys.stdout.write( "hello world" )
|
ログイン後にコピー
执行效果如下:

所以综上所述,input()+print() 结合的代码语句即可使用sys.stdin.readline()+sys.stdin.write()代替,如下:
1 2 3 | sys.stdout.write( "please input a number: n" )
number = sys.stdin.readline()
sys.stdout.write( "your input number is %s" % number)
|
ログイン後にコピー
执行效果如下:

6 .sys モジュールのその他の使用方法
- sys.version: Python インタープリターのバージョンを取得します
- sys.exc_info(): 例外情報トリプレットを返します
- sys.getdefaultencoding(): システムの現在のエンコーディングを取得します。デフォルトは utf-8です。
- sys.setdefaultencoding(): システムのデフォルトのエンコーディングを設定します。
- sys.getfilesystemencoding (): ファイル システムを取得します。エンコード方式を使用します。デフォルトは utf-8
- sys.modules: 現在の Python 環境にインポートされたすべてのモジュールを辞書形式で返します。
- sys .copyright: 現在の Python 著作権情報
- sys.getrefcount(object): オブジェクトへの参照の数を返します
- sys.getrecursionlimit(): Python の最大再帰深度を返します。デフォルトは 1000 です
- sys.getsizeof(object[,default ]): オブジェクトのサイズを返します
- sys.getwindowsversion(): 現在の Windows システムのバージョン情報を返します
概要
sys モジュールは Python に付属するモジュールで、主に Python インタープリターと対話するために使用されます。これには多くのメソッドまたは属性が付属しています。その中には次のものがあります。
1.sys.argv は、プログラムの外部からプログラムにパラメーターを転送するために使用され、コマンド ライン パラメーターのリストを取得できます。 argv リストには、スクリプトに渡されるすべてのパラメータが含まれます。
- sys.argv[0]: プログラム自体を表します。
- sys.argv[1]: プログラムの最初のパラメータを表します。プログラム
- sys.argv[2]: プログラム
#2.sys.exit(n) の 2 番目のパラメータがプログラムを終了するために使用されることを示します:
n が 0 の場合: 正常終了 - n が 0 に等しくない場合、異常終了により SystemExit 例外が発生します
-
sys.exit(n) は SystemExit をキャプチャすることがよくあります。プログラムが途中で自由に終了するかどうかを制御する例外とともに、
3.sys.platform は、platform.system() と同様に、現在の Python 実行プラットフォームを取得するために使用され、さまざまなオペレーティング システムを対象とするためによく使用されます。 . 別の動作ロジックを作成します;
4.sys.path は Python の検索モジュールのパス セットです. sys.path.append() メソッドを通じて現在のプロジェクトのルート ディレクトリをシステム環境変数に追加します。モジュールが見つからないというエラー レポートを解決するには、
#5 を使用できます。Python では、input() は sys.stdin.readline() に相当し、print() は sys.stdout に相当します。 。読み込まれた行()。
以上がPython で一般的に使用される標準ライブラリとサードパーティ ライブラリ 2-sys モジュールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。