Membaca Fail Menggunakan Laluan Relatif dalam Projek Python
Latar Belakang:
Python projek selalunya mempunyai struktur fail tertentu dengan pelbagai direktori dan modul. Mengakses fail dari dalam modul yang berbeza menggunakan laluan relatif kadangkala boleh mengakibatkan ralat. Pertimbangkan struktur projek berikut:
project /data test.csv /package __init__.py module.py main.py
Dalam contoh ini, fail module.py cuba mengakses fail test.csv menggunakan laluan relatif ("../data/test.csv", tetapi menemui ralat apabila dijalankan dari main.py.
Penjelasan:
Laluan relatif ditafsirkan secara berbeza bergantung pada modul tempat ia digunakan secara langsung direktori pakej, laluan relatif berfungsi kerana ia adalah relatif kepada lokasi modul Walau bagaimanapun, apabila main.py mengimport dan menjalankan modul, laluan relatif menjadi relatif kepada lokasi fail main.py.
Penyelesaian:
Laluan Mutlak:
Laluan mutlak menentukan lokasi fail yang lengkap, tanpa mengira direktori kerja semasa bina laluan mutlak dalam Python, gunakan os.path.abspath().<code class="python">path = os.path.abspath("path/to/test.csv")</code>
Pathlib:
Jika menggunakan Python 3.4 atau lebih tinggi, pathlib menyediakan cara yang lebih ringkas untuk membina laluan mutlak.<code class="python">from pathlib import Path path = Path(__file__).parent / "../data/test.csv"</code>
fail Atribut:
__file__ atribut skrip mengembalikan laluan mutlaknya. Menggunakan atribut ini, anda boleh mengira laluan mutlak ke fail sasaran.<code class="python">import os.path path = os.path.join(os.path.dirname(__file__), "../data/test.csv")</code>
Cadangan:
Untuk keserasian dan kejelasan yang lebih baik, biasanya disyorkan untuk menggunakan penyelesaian pathlib untuk Python 3.4 dan penyelesaian os.path.join() untuk versi Python yang lebih lama.Atas ialah kandungan terperinci Cara Mengakses Fail Menggunakan Laluan Relatif dalam Projek Python: Mengapa \'../data/test.csv\' Gagal dan Bagaimana untuk Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!