ホームページ >バックエンド開発 >Python チュートリアル >Python プロジェクトで相対パスを使用してファイルにアクセスする方法: 「../data/test.csv」が失敗する理由とその修正方法

Python プロジェクトで相対パスを使用してファイルにアクセスする方法: 「../data/test.csv」が失敗する理由とその修正方法

DDD
DDDオリジナル
2024-10-28 02:51:30976ブラウズ

How to Access Files Using Relative Paths in Python Projects: Why

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 ファイルの場所に相対します。

解決策:

  1. 絶対パス:

    現在の作業ディレクトリに関係なく、絶対パスでファイルの完全な場所を指定します。 Python で絶対パスを構築するには、os.path.abspath() を使用します。

    <code class="python">path = os.path.abspath("path/to/test.csv")</code>
  2. Pathlib:

    Python 3.4 を使用している場合、またはこれより高い場合、pathlib は絶対パスを構築するためのより簡潔な方法を提供します。

    <code class="python">from pathlib import Path
    
    path = Path(__file__).parent / "../data/test.csv"</code>
  3. 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。