Pythonのosモジュール
PythonのOSモジュールは、操作システムの情報を取得したり、プロセスを制御したりするための簡単な機能を提供します。
PythonのOSモジュール
OSモジュールが提供する機能により、Windows、Macintosh、Linuxを問わず、基盤となるオペレーティングシステムのタスクを操作することができます。このレッスンでは、これらの機能と、それらを使って何ができるかを見直します。これらの機能と提供される情報についての旅を始めましょう。
Pythonのosをインポートする。
オペレーティングシステムの名前
この機能は、インポートするOSモジュールの名前を返します。これは、基本的なオペレーティングシステムによって異なります。現在、 ‘posix’、 ‘os2’、 ‘ce’、 ‘nt’、 ‘riscos’、および ‘java’ が登録されています。システム上でこれを実行しましょう。
>>> print(os.name)
posix
明らかに、これはインタープリターに基づいて異なるプラットフォームを出力できます。
os.environを日本語で言い換えると、「環境変数」となります。
環境は機能ではなく、システムの環境変数にアクセスするためのプロセスパラメータです。以下にサンプルコードの一部をご覧ください。
import os
output = os.environ['HOME']
print(output)
os.execvp -> os.execvpを言い換えます
os.execvp -> os.execvpを別の形で述べると
execvp関数は、システム上で他のコマンドを実行する方法の1つです。この関数のサンプルコードスニペットを見てみましょう。
import os
program = "python"
arguments = ["hello.py"]
print(os.execvp(program, (program,) + tuple(arguments)))
これについて、私たちは以下のコードを使用してhello.pyというサンプルスクリプトを作成しました。 (Kore ni tsuite, watashitachi wa ikkaino kōdo o shiyō shite hello.py to iu sanpuru sukuripto o sakusei shimashita.)
print('Hello')
os.getuidを日本語で言い換えると:
「os.getuidの関数を使うと、ユーザーのUIDが取得できます。」
このosモジュールの関数は、現在のプロセスのユーザーIDまたはUIDを返します。
>>> os.getuid()
501
現在のシェルプロセスIDは501です。
`os.rename` を日本語で自然に述べると何となりますか?一つのオプションで結構です。
ファイルを移動します。
Pythonのos.rename関数を使えば、簡単にファイル名を変更することができます。
import os
fileDir = "JournalDev.txt"
os.rename(fd,'JournalDev_Hi.txt')
この場合、スクリプトに正しい許可を与える必要があることに注意してください。
以下の表現を日本語で1つのオプションで言い換えます:
os.system
Pythonのosシステム関数を使うことで、Pythonスクリプト内でシェルで実行しているかのようにコマンドを実行することができます。たとえば:
import os
currentFiles = os.system("users > users.txt")
オーエスエラー
Pythonのosモジュールのエラークラスは、I/O関連のエラーの基本クラスです。そのため、except節でOSErrorを使用してIOエラーをキャッチすることができます。
import os
try:
f = open('abc.txt', 'r') # file is missing
except OSError:
print('Error')
os.getpid → OSのプロセスIDを取得
この関数は、一般的にPIDとして知られる現在のプロセスIDを返します。
>>> 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')
それは実際にはかなり詳細でした。
os.pathをインポートする vs osをインポートする
実際には、os.pathは奇妙に動作します。osはサブモジュールpathと一緒にパッケージ化されているように見えますが、実際には、osはsys.moduleと連携してos.pathをサポートする通常のモジュールです。裏側で何が起こっているかをリストアップしましょう。
- When Python starts, it loads many modules into sys.module.
- os module is also loaded when Python starts. It assigns its path to the os specific module attribute.
- It injects sys.modules[‘os.path’] = path so that you’re able to do import os.path as though it was a submodule.
まとめ
このレッスンでは、PythonのOSモジュールが提供するさまざまな機能について学び、それがどのように機能するかを確認しました。Pythonに関する他のレッスンはこちらでご覧ください。参考文献:APIドキュメント