Python で作業ディレクトリの変更
この記事では、現在の作業ディレクトリを Python から別の場所に変更する方法について説明します。
Python で os モジュールを使用してディレクトリを変更する
何らかの理由で、コマンドコンソールではなく Python 経由で作業ディレクトリを変更したいとします。その場合、モジュール os は、Python を介して直接、雑多なオペレーティングシステムユーティリティのためのツールを提供しています。
import os
例えば、現在 /Users/user の作業ディレクトリにいて、Users/user2 に変更したいとします。まず、os.getcwd() の結果を出力して現在の作業ディレクトリを確認します。次に os.chdir("Users/user2") ブロックを呼び出して、現在の作業ディレクトリを切り替えます。
print(os.getcwd())
os.chdir("/Users/user2")
print(os.getcwd())
出力:
/Users/user
/Users/user2
これで、あなたのプログラムが user から user2 への作業ディレクトリの切り替えに成功したことが確認できます。
例外のチェック
パスはユーザが入力したものなので、入力エラーが発生する可能性が高いです。例えば、ユーザが存在しないパスを入力した場合、この関数は FileNotFound 例外を発生させやすくなります。このことを考えると、例外チェックを実装する必要があります。
if-else を使用してエラーをチェックする
簡単な方法は、if-else を用いて指定したパスが存在するかどうかを調べることです。
import os
def changeDir(newPath):
if os.path.exists(newPath):
os.chdir("Directory moved: ", newPath)
print(os.getcwd())
else:
print("Directory ", newPath, " not found.")
print("Base directory: ", os.getcwd())
changeDir("/Users/user2")
changeDir("/Users/nonexistentpath")
ここでは、/Users/user2 が既存のファイルパスであり、/Users/nonexistentpath が存在しないと仮定します。
出力:
Base directory: /Users/user
Directory moved: /Users/user2
Directory Users/nonexistentpath not found.
最初の changeDir() ブロックの呼び出しは、パスが存在するので if 文を通過します。一方、2 回目の呼び出しは else 文を通過し、パスが存在しないためにエラーのようなメッセージを表示します。
try...except を使用してエラーをチェックする
もし os.chdir() コマンドがファイルのパスを見つけられない場合、FileNotFoundError 通知をスローします。これをキャッチするには、try...except ブロックでコードをまとめる必要があります。
import os
def changeDir(newPath):
try:
os.chdir(newPath)
print("Directory moved: newPath")
except OSError:
print("Directory ", newPath, "does not exist.")
print("Base directory: ", os.getcwd())
changeDir("/Users/user2")
changeDir("/Users/nonexistentpath")
出力:
Base directory: /Users/user
Directory moved: /Users/user2
Directory Users/nonexistentpath does not exist.
多かれ少なかれ、どちらも同じ出力を生成します。しかし、try...except の例外処理を使用する方が if-else 文を使用するよりもはるかに安全です。ユーザー定義の条件は、ファイルパス操作に取り組む際に発生する可能性のある例外のすべてをカバーしているとは限らないからです。
要約すると、os モジュールはファイルとディレクトリの操作を幅広くサポートしており、他のユーティリティの中でも特に優れた機能を提供しています。
作業ディレクトリを直接変更するには os.chdir() ブロックを使用することができますが、例外が発生しないようにするには if-else ブロックか try...except ブロックで囲んだ方が安全です。
ファイル操作についてもっと詳しく知りたいのであれば、例外処理とファイル名や内容の更新は非常に重要です。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn