PythonのOSモジュールは、インタラクティブな機能を提供し、オペレーティングシステム情報を取得し、制御することができます。
Python OSモジュール
OSモジュールが提供する機能を使うと、Windowsプラットフォーム、Macintosh、またはLinuxであっても、基礎となるオペレーティングシステムのタスクを操作できます。このレッスンでは、これらの機能と、それらを使用して何ができるかを見ていきます。これらの機能とそれらが提供する情報を使って、旅を始めましょう。
Pythonのosをインポート
まず最初に、プログラムでOSモジュールをインポートする必要があります。その後で、その機能のいずれかを実行できます。
os.name
この機能は、インポートするOSモジュールの名前を提供します。これは、基盤となるオペレーティングシステムによって異なります。現在、 ‘posix’、 ‘os2’、 ‘ce’、 ‘nt’、 ‘riscos’、および ‘java’が登録されています。システムでこれを実行しましょう:
>>> print(os.name)
posix
明らかに、これはインタプリターに基づいて異なるプラットフォームを出力できます。
os.environ
environ
は関数ではなく、システムの環境変数にアクセスできるプロセスパラメーターです。サンプルコードスニペットを見てみましょう:
import os
output = os.environ['HOME']
print(output)
このスクリプトを実行すると、以下のように出力されます:これを使用して環境変数と連携できます。詳細は、Pythonの環境変数設定を参照してください。
os.execvp
execvp
関数は、システムで他のコマンドを実行する方法の1つです。この関数のサンプルコードスニペットを見てみましょう:
import os
program = "python"
arguments = ["hello.py"]
print(os.execvp(program, (program,) + tuple(arguments)))
これには、次のコードを含むサンプルスクリプト hello.py
を作成しました:
print('Hello')
os.getuid
このosモジュールの機能は、現在のプロセスのユーザーIDまたはUIDを返します。それは一般的に知られています。
>>> os.getuid()
501
したがって、現在のシェルプロセスのIDは501です。
os.rename
Pythonのos rename関数を使用すると、簡単にファイルの名前を変更できます。
import os
fileDir = "JournalDev.txt"
os.rename(fd,'JournalDev_Hi.txt')
これにはスクリプトに正しい権限を付与する必要があります。
os.system
Python os system関数を使用すると、Pythonスクリプトでコマンドを実行できます。まるでシェルで実行しているかのようです。例:
import os
currentFiles = os.system("users > users.txt")
このスクリプトを実行すると、同じディレクトリにusers.txtという名前の新しいファイルが作成され、内容は ‘shubham’ となります。これは元のシェルによっても返されるものです:なお、これは非常に強力なコマンドであり、慎重に使用する必要があります。
os.error
Pythonのosモジュールのエラークラスは、I/O関連のエラーの基本クラスです。したがって、except節でOSErrorを使用してIOエラーをキャッチできます。
import os
try:
f = open('abc.txt', 'r') # file is missing
except OSError:
print('Error')
os.getpid
この関数は現在のプロセスIDまたはPIDを返します。一般にはPIDとして知られています。
>>> os.getpid()
71622
したがって、現在のシェルプロセスのユーザーIDは71622です。
os.listdir
この関数は、現在の作業ディレクトリに存在するファイルとディレクトリをリストアップするだけです。
>>> import os
>>> os.listdir()
['.DS_Store', '.localized', 'JournalDev', 'Java', 'Python']
ディレクトリとファイル名のイテラブルリストを返します。
os.uname
この関数は、実行されている現在のオペレーティングシステムを識別する情報を返します。
>>> os.uname()
posix.uname_result(sysname='Darwin', nodename='Shubham.local', release='17.2.0', version='Darwin Kernel Version 17.2.0: Fri Sep 29 18:27:05 PDT 2017; root:xnu-4570.20.62~3/RELEASE_X86_64', machine='x86_64')
実際にはかなり詳細です。
import os.path vs import os
os.path
は実際には奇妙に動作します。それはまるでos
がpath
というサブモジュールを搭載したかのように見えますが、実際にはos
はsys.module
と連携してos.path
をサポートする通常のモジュールです。裏で何が起こっているかをリストアップしましょう:
- Pythonが起動すると、多くのモジュールが
sys.module
にロードされます。 os
モジュールもPythonの起動時にロードされます。それはpath
をos
の特定のモジュール属性に割り当てます。- そして、
sys.modules['os.path'] = path
を注入して、あたかもそれがサブモジュールであるかのようにimport os.path
を行えるようにします。
概要
このレッスンでは、PythonのOSモジュールが提供するさまざまな関数について学び、それらがどのように機能するかを見ました。Pythonの他のレッスンについてはこちらを参照してください。参考: API Doc
Source:
https://www.digitalocean.com/community/tutorials/python-os-module