Pythonの標準ライブラリのos
モジュールは、操作システム(OS)とのやり取りを行うためのものです。
OSモジュールを使うことで、様々な作業を自動化することができます。
- ファイル・ディレクトリの操作:
os.mkdir
:新しいディレクトリを作成するos.rmdir
:存在するディレクトリを削除するos.rename
:ファイル名またはディレクトリ名を変更するos.listdir
:指定したパス内のすべてのファイル・ディレクトリ名をリスト形式で取得する
- 環境変数の操作:
os.environ
:環境変数を辞書形式で取得するos.getenv
:特定の環境変数の値を取得する
- ファイル・パスの操作:
os.path.join
:パスを連結するos.path.abspath
:相対パスを絶対パスに変換するos.path.exists
:ファイル・ディレクトリが存在するかどうかを判定するos.path.isdir
:指定したパスがディレクトリかどうかを判定するos.path.isfile
:指定したパスがファイルかどうかを判定する
今回は、OSモジュールを使用し「複数のパスを結合する方法」を解説します。
【Python】複数のパスを結合する方法を解説【OSモジュール】
複数のパスを結合するコードは、以下の通りです。
import os
path1 = '/path/to/dir1'
path2 = 'file.txt'
full_path = os.path.join(path1, path2)
print(full_path)
この例では、path1
とpath2
をos.path.join
メソッドに渡して、正確なパスを生成しています。このメソッドは、渡されたパスに応じて、正しい区切り文字(/
または\
)を使用して、複数のパスを結合します。
このように、os.path.join
は複数のパスを結合するための便利なメソッドです。
標準ライブラリに含まれているため、このメソッドを使用することで、簡単に正確なパスを構築することができます。
パス指定方法
コードを作成した時、以下のエラーが出る場合があります。
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
このエラーは、Windowsシステム上でのパス指定に問題があるために発生しています。
文字列リテラル中でのバックスラッシュをエスケープするために、2つ連続するバックスラッシュを使用する必要があります。また、r
プレフィックスを使用することで、文字列を raw string に指定することもできます。
path1 = r"C:\Users\corosuke\OneDrive\デスクトップ"
path2 = "test.txt"
full_path = os.path.join(path1, path2)
print(full_path)
このようにpath1の最初に「r」を付与することで、エラーが解消されます。
もしくは、以下の方法でもエラーを解消できます。
path1 = "C:\\Users\\corosuke\\OneDrive\\デスクトップ"
path2 = "test.txt"
full_path = os.path.join(path1, path2)
print(full_path)
パスの表記がおかしい?【print関数と変数のアウトプットが異なる】
path1 = "C:\\Users\\corosuke\\OneDrive\\デスクトップ"
path2 = "test.txt"
full_path = os.path.join(path1, path2)
print(full_path)
full_path
パスを指定した際、変数「full_path」をprint関数で表記するのと、そのまま変数「full_path」を表記するのでアウトプットが変わります。
print関数:C:\Users\corosuke\OneDrive\デスクトップ\test.txt
変数「full_path」:’C:\\Users\\corosuke\\OneDrive\\デスクトップ\\test.txt’
full_path
変数に格納された文字列は、Pythonによって自動的にエスケープされた文字列として扱われます。
このため、変数名だけを表示すると、エスケープされた文字列として表示されます。
一方、print
関数を使用して文字列を出力する場合、Pythonは文字列に含まれるエスケープシーケンスを解釈し、そのままの形式で出力します。
このため、print
関数を使用すると、エスケープシーケンスが解釈され、通常の文字列として出力されます。
まとめると、変数名だけを表示するとエスケープされた文字列として表示されますが、print
関数を使用すると通常の文字列として出力されます。
もっと効率的に勉強したい方
独学での勉強に限界を感じている方は、思い切って課金するのも手です。
udemyなら基礎的な知識を短期間でマスターすることが可能です。
僕も最初の頃は、udemyの動画で勉強しました。
講師のコードを見ながら作成できるので、成長速度が非常に早くなりました。
数千円で数十時間の節約になるので、悩んでいる方はケチらず投資していきましょう!
コメント