ホームページ  >  記事  >  バックエンド開発  >  PythonのOSモジュールの使い方とサンプル

PythonのOSモジュールの使い方とサンプル

PHPz
PHPz転載
2023-04-22 22:19:172882ブラウズ

Python の os モジュールは、オペレーティング システムとの対話に使用される標準ライブラリの 1 つで、ファイルやディレクトリを操作するための便利な関数や変数が多数提供されています。一般的な OS モジュール関数の使用法を次に示します:

1. 現在の作業ディレクトリを取得します:

import os
cwd = os.getcwd()
print(cwd)

2. 現在の作業ディレクトリを切り替えます:

import os
os.chdir('/path/to/new/directory')

3.ディレクトリを一覧表示します:

import os
files = os.listdir('/path/to/directory')
print(files)

4. 指定されたパスがディレクトリであるかどうかを確認します:

import os
path = '/path/to/directory'
if os.path.isdir(path):
    print("It's a directory")
else:
    print("It's not a directory")

5. 指定されたパスがファイルであるかどうかを確認します:

import os
path = '/path/to/file'
if os.path.isfile(path):
    print("It's a file")
else:
    print("It's not a file")

6. ファイルのサイズをバイト単位で取得します:

import os
path = '/path/to/file'
size = os.path.getsize(path)
print(size)

7. 指定されたパスが存在するかどうかを確認します:

import os
path = '/path/to/file_or_directory'
if os.path.exists(path):
    print("It exists")
else:
    print("It doesn't exist")

8. 新しいディレクトリを作成します:

import os
path = '/path/to/new/directory'
os.mkdir(path)

9. 新しいディレクトリを再帰的に作成します (ディレクトリが存在しない場合):

import os
path = '/path/to/new/directory'
os.makedirs(path, exist_ok=True)

10. ファイルまたは空のディレクトリを削除します:

import os
path = '/path/to/file_or_directory'
os.remove(path)

11. ディレクトリとその内容を再帰的に削除します:

import os
path = '/path/to/directory'
os.system('rm -rf ' + path)

その他の便利な使い方:

12.os.path.splitext() メソッドは、パスをファイル名と拡張子の 2 つの部分に分割します。ファイル名の最後の「.」を区切り文字として使用して、ファイル名と拡張子を区切ります。たとえば、ファイル パスが「/path/to/file.txt」の場合、os.path.splitext() メソッドはタプル (「/path/to/file」、「.txt」) を返します。

ファイル名に「.」が含まれていない場合、返される拡張子は空の文字列であることに注意してください。ファイル名が「.」で始まる場合、拡張子のないファイルとみなされ、os.path.splitext() メソッドは (ファイル パス, '') を返します。

次は例です:

import os
path = '/path/to/file.txt'
file_name, ext = os.path.splitext(path)
print('文件名为:', file_name)
print('扩展名为:', ext)

出力結果は次のとおりです:

ファイル名は次のとおりです: /path/to/file
拡張子は次のとおりです。 : .txt

13. ファイル権限の設定:

import os
os.chmod('/path/to/file', 0o777) # 设置读、写、执行权限

os.chmod() メソッドを使用して、ファイルまたはディレクトリのアクセス権限を変更できます。ファイル パスと新しいアクセス許可モードの 2 つのパラメータを受け入れます。許可モードは 8 進数で表すことができ、各ビットは異なる許可を表します。

権限モードの例をいくつか示します:

  • 0o400: 読み取り専用権限

  • 0o200: 書き込み権限

  • 0o100: 実行権限

  • 0o700: すべての権限

14. CPU の数を取得します。

import os
cpu_count = os.cpu_count()
print('CPU数量为:', cpu_count)

os.cpu_count() によって返される CPU の数は物理 CPU コアの数であり、ハイパースレッディング テクノロジの仮想コアは含まれないことに注意してください。ハイパー スレッディング テクノロジを備えたシステムでは、各物理 CPU コアが 2 つの仮想コアに分割されるため、os.cpu_count() メソッドは実際の CPU コア数よりも大きい数値を返す場合があります。

さらに、os.cpu_count() メソッドは、オペレーティング システムごとに実装が異なる場合があります。一部のオペレーティング システムでは、物理 CPU コアの数ではなく、論理 CPU コアの数のみが返される場合があります。したがって、この方法を使用する場合、詳細については関連ドキュメントを参照することをお勧めします。

15. 新しいプロセスを開始します:

import os
os.system('notepad.exe')

os.system() メソッドは、オペレーティング システム上でコマンドを実行し、コマンドの終了ステータス コードを返すことができます。そのパラメータは文字列タイプのコマンドであり、任意の有効なシステム コマンドを使用できます。

次の例は、os.system() メソッドを使用して簡単なコマンドを実行する方法を示しています:

import os
os.system('echo "Hello, World!"')

上記のコードは Hello, World! 文字列を出力し、コマンドの終了ステータス コード (通常は成功の場合は 0)。

os.system() メソッドは、コマンドの実行が完了するまで現在のプロセスをブロックすることに注意してください。現在のプロセスをブロックせずにコマンドを実行したい場合は、subprocess.Popen() など、subprocess モジュール内の他のメソッドの使用を検討できます。

次の別の例は、os.system() メソッドを使用して、wget を使用して Linux システムにファイルをダウンロードするなど、複雑なコマンドを実行する方法を示しています。上記のコードは、url パラメーターで指定されたファイルを、output_dir パラメーターで指定されたディレクトリにダウンロードし、コマンドの終了ステータス コードを返します。

16.os.environ: これは、現在の環境変数を含む辞書です。 os.environ[key] を使用して、特定の環境変数の値を取得できます。

17.os.exec*(): これらのメソッドを使用すると、Python プログラムは現在のプロセスで他のプログラムを実行し、現在のプロセスを置き換えることができます。たとえば、os.execv() メソッドは、指定された引数リストを使用してプログラムを実行し、現在のプロセスを置き換えることができます。

18.os.fork(): このメソッドは、プログラムを並列実行するために Unix または Linux オペレーティング システム上に子プロセスを作成できます。子プロセスは、コード、データ、スタックなどを含む親プロセスのすべてのメモリ内容をコピーするため、プログラムは親プロセスに基づいて実行を続行できます。

19.os.kill(): このメソッドは、指定されたプロセスにシグナルを送信するために使用されます。 os.kill(pid, signal) メソッドを使用すると、指定したシグナルを指定したプロセスに送信できます。一般的に使用される信号には、SIGINT (割り込み信号)、SIGTERM (終了信号)、SIGKILL (強制終了信号) などがあります。

20.os.pipe(): このメソッドは、プロセス間の通信用のパイプを作成できます。 os.pipe() メソッドは 2 つのファイル記述子を返します。1 つはパイプ データの読み取り用で、もう 1 つはパイプ データの書き込み用です。

21.os.wait(): このメソッドは、子プロセスの終了を待ってから、子プロセスのステータス コードを返すことができます。 os.waitpid(pid, options) メソッドを使用すると、指定したプロセスが終了するのを待機し、プロセスのステータス コードを返すことができます。

22.os模块可以用来操作文件路径。例如,os.path.join(path, *paths)可以将多个路径拼接成一个完整路径,os.path.abspath(path)可以将相对路径转换为绝对路径,os.path.split(path)可以将路径分割成目录和文件名。

23.遍历目录树

import os
def list_files(path):
    for root, dirs, files inos.walk(path):
        for file in files:
            print(os.path.join(root, file))
list_files('.')

这段代码可以遍历当前工作目录及其子目录下的所有文件,并打印出它们的完整路径。

os.walk()是os模块中一个非常有用的函数,用于遍历指定目录及其子目录下的所有文件和目录。它返回一个三元组(root, dirs, files),其中root是当前目录的路径,dirs是当前目录下的子目录列表,files是当前目录下的文件列表。下面是一个os.walk()的详细解释和示例:

for root, dirs, files in os.walk(top, topdown=True, onerror=None, followlinks=False):
    # Do something with root, dirs, and files

top是指定的目录路径,可以是相对路径或绝对路径。

  • topdown是一个布尔值,表示遍历时是否先遍历当前目录,再遍历子目录。如果为True(默认值),则先遍历当前目录,再遍历子目录;如果为False,则先遍历子目录,再遍历当前目录。

  • onerror是一个可选的错误处理函数,如果在遍历过程中出现错误,则会调用这个函数。

  • followlinks是一个布尔值,表示是否跟随符号链接。如果为True,则会跟随符号链接遍历目录;如果为False(默认值),则会忽略符号链接。

在遍历过程中,os.walk()会依次遍历指定目录及其子目录下的所有文件和目录,并返回当前目录的路径、子目录列表和文件列表。可以通过遍历返回的三元组来处理目录和文件。例如,可以使用下面的代码列出指定目录下的所有文件和子目录:

import os
 
def list_files_and_dirs(path):
    for root, dirs, files in os.walk(path):
        print(f'Directory: {root}')
        for file in files:
            print(f'  File: {os.path.join(root, file)}')
        for dir in dirs:
            print(f'  Subdirectory: {os.path.join(root, dir)}')
 
list_files_and_dirs('.')

这段代码会遍历当前工作目录及其子目录下的所有文件和目录,并输出相应的信息。

需要注意的是,os.walk()只会遍历当前目录及其子目录下的文件和目录,不会遍历符号链接所指向的文件或目录。如果需要遍历符号链接所指向的文件或目录,需要设置followlinks=True。

以上がPythonのOSモジュールの使い方とサンプルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。