ホームページ >バックエンド開発 >Python チュートリアル >Python プロジェクトで相対パスを使用してファイルにアクセスする方法: 「../data/test.csv」が失敗する理由とその修正方法
Python プロジェクトで相対パスを使用したファイルの読み取り
背景:
Pythonプロジェクトには、さまざまなディレクトリやモジュールを含む特定のファイル構造があることがよくあります。相対パスを使用して異なるモジュール内からファイルにアクセスすると、エラーが発生する場合があります。次のプロジェクト構造を考えてみましょう。
project /data test.csv /package __init__.py module.py main.py
この例では、module.py ファイルが相対パス (「../data/test.csv」) を使用して test.csv ファイルにアクセスしようとしますが、 main.py から実行するとエラーが発生します。
説明:
module.py を直接実行する場合、相対パスは使用されるモジュールに応じて解釈されます。パッケージ ディレクトリの場合、相対パスはモジュールの場所に相対しているため機能します。ただし、main.py がモジュールをインポートして実行すると、相対パスは main.py ファイルの場所に相対します。
解決策:
絶対パス:
現在の作業ディレクトリに関係なく、絶対パスでファイルの完全な場所を指定します。 Python で絶対パスを構築するには、os.path.abspath() を使用します。
<code class="python">path = os.path.abspath("path/to/test.csv")</code>
Pathlib:
Python 3.4 を使用している場合、またはこれより高い場合、pathlib は絶対パスを構築するためのより簡潔な方法を提供します。
<code class="python">from pathlib import Path path = Path(__file__).parent / "../data/test.csv"</code>
file 属性:
スクリプトの __file__ 属性は絶対パスを返します。この属性を使用すると、ターゲット ファイルへの絶対パスを計算できます。
<code class="python">import os.path path = os.path.join(os.path.dirname(__file__), "../data/test.csv")</code>
推奨事項:
互換性と明確性を高めるために、一般に、Python 3.4 には pathlib ソリューションを使用し、古い Python バージョンには os.path.join() ソリューションを使用することをお勧めします。
以上がPython プロジェクトで相対パスを使用してファイルにアクセスする方法: 「../data/test.csv」が失敗する理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。