MENU

【Python】複数のパスを結合する方法を解説【OSモジュール】

【Python】複数のパスを結合する方法を解説【OSモジュール】

Pythonの標準ライブラリのosモジュールは、操作システム(OS)とのやり取りを行うためのものです。

OSモジュールを使うことで、様々な作業を自動化することができます。

     

OSモジュールの主な用途
  1. ファイル・ディレクトリの操作:
    • os.mkdir:新しいディレクトリを作成する
    • os.rmdir:存在するディレクトリを削除する
    • os.rename:ファイル名またはディレクトリ名を変更する
    • os.listdir:指定したパス内のすべてのファイル・ディレクトリ名をリスト形式で取得する
  2. 環境変数の操作:
    • os.environ:環境変数を辞書形式で取得する
    • os.getenv:特定の環境変数の値を取得する
  3. ファイル・パスの操作:
    • 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)

         

この例では、path1path2os.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の動画で勉強しました。

講師のコードを見ながら作成できるので、成長速度が非常に早くなりました。

数千円で数十時間の節約になるので、悩んでいる方はケチらず投資していきましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次