Python os モジュール

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は実際には奇妙に動作します。それはまるでospathというサブモジュールを搭載したかのように見えますが、実際にはossys.moduleと連携してos.pathをサポートする通常のモジュールです。裏で何が起こっているかをリストアップしましょう:

  • Pythonが起動すると、多くのモジュールがsys.moduleにロードされます。
  • osモジュールもPythonの起動時にロードされます。それはpathosの特定のモジュール属性に割り当てます。
  • そして、sys.modules['os.path'] = pathを注入して、あたかもそれがサブモジュールであるかのようにimport os.pathを行えるようにします。

概要

このレッスンでは、PythonのOSモジュールが提供するさまざまな関数について学び、それらがどのように機能するかを見ました。Pythonの他のレッスンについてはこちらを参照してください。参考: API Doc

Source:
https://www.digitalocean.com/community/tutorials/python-os-module