python学習_初歩編_18:標準ライブラリの使用方法_osライブラリ

Pythonのosライブラリは、ファイルやディレクトリの操作を行うためのライブラリです。osライブラリで出来ることは、以下のような内容です。

ファイルとディレクトリの操作:サンプルコード

ディレクトリを作成する: os.mkdir('new_directory')

このコードでは、create_directoryという関数を定義しています。create_directory関数は引数としてディレクトリ名を受け取り、os.mkdirを使って新しいディレクトリを作成します。try-except文を使用して、ディレクトリが既に存在する場合や作成中にエラーが発生した場合に適切なメッセージを表示します。
上記のサンプルコードでは、new_directoryという名前のディレクトリを作成しています。必要に応じて、ディレクトリ名を変更してください。


import os

def create_directory(directory_name):
    try:
        os.mkdir(directory_name)
        print(f"Directory '{directory_name}' created successfully.")
    except FileExistsError:
        print(f"Directory '{directory_name}' already exists.")
    except Exception as e:
        print(f"An error occurred while creating directory '{directory_name}': {str(e)}")

# 新しいディレクトリを作成
new_directory = 'new_directory'
create_directory(new_directory)
ディレクトリを再帰的に作成する: os.makedirs('parent/child')

このコードでは、create_nested_directoryという関数を定義しています。create_nested_directory関数は引数としてディレクトリパスを受け取り、os.makedirsを使用して指定されたネストされたディレクトリを作成します。try-except文を使用して、ディレクトリが既に存在する場合や作成中にエラーが発生した場合に適切なメッセージを表示します。
上記のサンプルコードでは、parent/childというパスにネストされたディレクトリを作成しています。必要に応じて、ディレクトリパスを変更してください。


import os

def create_nested_directory(directory_path):
    try:
        os.makedirs(directory_path)
        print(f"Directory '{directory_path}' created successfully.")
    except FileExistsError:
        print(f"Directory '{directory_path}' already exists.")
    except Exception as e:
        print(f"An error occurred while creating directory '{directory_path}': {str(e)}")

# ネストされたディレクトリを作成
nested_directory = 'parent/child'
create_nested_directory(nested_directory)
ディレクトリを削除する: os.rmdir('directory')

このコードでは、remove_directoryという関数を定義しています。remove_directory関数は引数として削除するディレクトリ名を受け取り、os.rmdirを使用してディレクトリを削除します。try-except文を使用して、指定したディレクトリが存在しない場合や削除中にエラーが発生した場合に適切なメッセージを表示します。
上記のサンプルコードでは、directoryという名前のディレクトリを削除しています。必要に応じて、ディレクトリ名を変更してください。ただし、os.rmdirは空のディレクトリしか削除できないため、削除対象のディレクトリが空であることを確認してください。


import os

def remove_directory(directory_name):
    try:
        os.rmdir(directory_name)
        print(f"Directory '{directory_name}' removed successfully.")
    except FileNotFoundError:
        print(f"Directory '{directory_name}' not found.")
    except OSError as e:
        print(f"An error occurred while removing directory '{directory_name}': {str(e)}")

# ディレクトリを削除
directory = 'new_directory'
remove_directory(directory)
ファイルをリネームする: os.rename('old_file.txt', 'new_file.txt')

このコードでは、rename_fileという関数を定義しています。rename_file関数は引数として変更前のファイル名と変更後のファイル名を受け取り、os.renameを使用してファイルの名前を変更します。try-except文を使用して、指定したファイルが存在しない場合や名前変更中にエラーが発生した場合に適切なメッセージを表示します。
上記のサンプルコードでは、old_file.txtというファイル名をnew_file.txtに変更しています。必要に応じて、変更前のファイル名と変更後のファイル名を変更してください。


import os

def rename_file(old_name, new_name):
    try:
        os.rename(old_name, new_name)
        print(f"File '{old_name}' renamed to '{new_name}' successfully.")
    except FileNotFoundError:
        print(f"File '{old_name}' not found.")
    except Exception as e:
        print(f"An error occurred while renaming file '{old_name}': {str(e)}")

# ファイルの名前を変更
old_file = 'old_file.txt'
new_file = 'new_file.txt'
rename_file(old_file, new_file)
ファイルを削除する: os.remove('file.txt')

このコードでは、remove_fileという関数を定義しています。remove_file関数は引数として削除するファイル名を受け取り、os.removeを使用してファイルを削除します。try-except文を使用して、指定したファイルが存在しない場合や削除中にエラーが発生した場合に適切なメッセージを表示します。
上記のサンプルコードでは、file.txtというファイルを削除しています。必要に応じて、削除するファイル名を変更してください。ただし、ファイルが存在することを確認してから削除するように注意してください。


import os

def remove_file(file_name):
    try:
        os.remove(file_name)
        print(f"File '{file_name}' removed successfully.")
    except FileNotFoundError:
        print(f"File '{file_name}' not found.")
    except Exception as e:
        print(f"An error occurred while removing file '{file_name}': {str(e)}")

# ファイルを削除
file = 'file.txt'
remove_file(file)
ファイルまたはディレクトリが存在するか確認する: os.path.exists('file.txt')

このコードでは、check_file_existsという関数を定義しています。check_file_exists関数は引数として確認するファイル名を受け取り、os.path.existsを使用してファイルの存在を確認します。もしファイルが存在する場合は該当のメッセージを表示し、存在しない場合は別のメッセージを表示します。
上記のサンプルコードでは、file.txtというファイルの存在を確認しています。必要に応じて、確認するファイル名を変更してください。


import os

def check_file_exists(file_name):
    if os.path.exists(file_name):
        print(f"File '{file_name}' exists.")
    else:
        print(f"File '{file_name}' does not exist.")

# ファイルの存在を確認
file = 'file.txt'
check_file_exists(file)
ディレクトリの内容をリストする: os.listdir('directory')

 


import os

files = os.listdir('directory')
for file in files:
    print(file)

パス操作:サンプルコード

現在のディレクトリを取得する: os.getcwd()

import os

def get_current_directory():
    current_directory = os.getcwd()
    print(f"Current directory: {current_directory}")

# 現在のディレクトリを取得
get_current_directory()
ディレクトリを変更する: os.chdir('new_directory')

このコードでは、change_directoryという関数を定義しています。change_directory関数は引数として移動先のディレクトリ名を受け取り、os.chdirを使用してカレントディレクトリを変更します。try-except文を使用して、指定したディレクトリが存在しない場合やディレクトリの変更中にエラーが発生した場合に適切なメッセージを表示します。 サンプルコードでは、new_directoryというディレクトリに移動します。必要に応じて、移動先のディレクトリ名を変更してください。


import os

def change_directory(new_directory):
    try:
        os.chdir(new_directory)
        print(f"Changed directory to '{new_directory}'.")
    except FileNotFoundError:
        print(f"Directory '{new_directory}' not found.")
    except Exception as e:
        print(f"An error occurred while changing directory to '{new_directory}': {str(e)}")

# ディレクトリの変更
new_directory = 'new_directory'
change_directory(new_directory)
パスを結合する: os.path.join('directory', 'file.txt')

このコードでは、join_directory_fileという関数を定義しています。join_directory_file関数は、引数としてディレクトリ名とファイル名を受け取り、os.path.joinを使用してディレクトリとファイル名を結合します。結合したパスを表示します。
上記のサンプルコードでは、directoryというディレクトリとfile.txtというファイル名を結合しています。必要に応じて、ディレクトリ名とファイル名を変更してください。os.path.joinはOSに依存しない方法でパスを結合するため、スラッシュやバックスラッシュの区別を気にする必要はありません。


import os

def join_directory_file(directory, filename):
    file_path = os.path.join(directory, filename)
    print(f"Joined path: {file_path}")

# ディレクトリとファイルの結合
directory = 'directory'
filename = 'file.txt'
join_directory_file(directory, filename)
パスのディレクトリ名を取得する: os.path.dirname('directory/file.txt')

このコードでは、get_directory_nameという関数を定義しています。get_directory_name関数は、引数としてファイルパスを受け取り、os.path.dirnameを使用してディレクトリ名を取得します。取得したディレクトリ名を表示します。
上記のサンプルコードでは、directory/file.txtというファイルパスからディレクトリ名を取得しています。必要に応じて、別のファイルパスを使用してください。os.path.dirnameは指定したパス文字列からディレクトリ部分を抽出するため、ファイル名や拡張子は無視されます。


import os

def get_directory_name(file_path):
    directory_name = os.path.dirname(file_path)
    print(f"Directory name: {directory_name}")

# ファイルパスからディレクトリ名を取得
file_path = 'directory/file.txt'
get_directory_name(file_path)

パスのベース名を取得する: os.path.basename('directory/file.txt')

このコードでは、get_file_nameという関数を定義しています。get_file_name関数は、引数としてファイルパスを受け取り、os.path.basenameを使用してファイル名を取得します。取得したファイル名を表示します。
上記のサンプルコードでは、directory/file.txtというファイルパスからファイル名を取得しています。必要に応じて、別のファイルパスを使用してください。os.path.basenameは指定したパス文字列からファイル名部分を抽出するため、ディレクトリ部分は無視されます。


import os

def get_file_name(file_path):
    file_name = os.path.basename(file_path)
    print(f"File name: {file_name}")

# ファイルパスからファイル名を取得
file_path = 'directory/file.txt'
get_file_name(file_path)

パスがディレクトリかどうかを判定する: os.path.isdir('directory')

このコードでは、check_directoryという関数を定義しています。check_directory関数は、引数として確認するディレクトリ名を受け取り、os.path.isdirを使用してディレクトリの存在を確認します。もしディレクトリであれば該当のメッセージを表示し、ディレクトリでない場合は別のメッセージを表示します。
上記のサンプルコードでは、directoryというディレクトリの存在を確認しています。必要に応じて、確認するディレクトリ名を変更してください。os.path.isdirは指定したパスがディレクトリであるかどうかを判定します。


import os

def check_directory(directory):
    if os.path.isdir(directory):
        print(f"'{directory}' is a directory.")
    else:
        print(f"'{directory}' is not a directory.")

# ディレクトリの存在を確認
directory = 'directory'
check_directory(directory)
パスがファイルかどうかを判定する: os.path.isfile('file.txt')

のコードでは、check_fileという関数を定義しています。check_file関数は、引数として確認するファイル名を受け取り、os.path.isfileを使用してファイルの存在を確認します。もしファイルであれば該当のメッセージを表示し、ファイルでない場合は別のメッセージを表示します。
上記のサンプルコードでは、file.txtというファイルの存在を確認しています。必要に応じて、確認するファイル名を変更してください。os.path.isfileは指定したパスがファイルであるかどうかを判定します。


import os

def check_file(file):
    if os.path.isfile(file):
        print(f"'{file}' is a file.")
    else:
        print(f"'{file}' is not a file.")

# ファイルの存在を確認
file = 'file.txt'
check_file(file)