Kadangkala kita sering melihat kod yang serupa:
assert os.path.isdir(path_model_dir) assert os.path.exits(path_model_dir)
Jika anda mengisi laluan relatif sebagai path_model_dir, ia akan mendatangkan akibat yang buruk. Kita perlu memberi perhatian kepada elemen berikut:
Kaedah os.path.exists() tidak secara langsung menggunakan laluan dalam sys.path untuk mencari fail, ia memanggil sistem pengendalian Antara muka untuk menyemak sama ada laluan yang diberikan wujud.
Apabila menggunakan laluan relatif, Python akan terlebih dahulu mentafsirkannya sebagai relatif kepada direktori kerja semasa. Biasanya, direktori kerja semasa jurubahasa interaktif ialah direktori dari mana jurubahasa itu dimulakan.
Dua perenggan di atas menerangkan bahawa jika anda mengisi laluan relatif, laluan relatif yang dinyatakan di sini ialah laluan relatif berbanding fail semasa atau laluan relatif berbanding penterjemah ia relatif kepada menjalankan penterjemah, menyahpepijat penterjemah, atau adakah ia relatif kepada laluan relatif dalam baris arahan? Saya pernah menyunting kod dalam editor yang sama, dan ia boleh dijalankan secara langsung semasa berjalan, tetapi ia terus melaporkan ralat semasa menyahpepijat Kemudian saya mendapati bahawa laluan relatif penterjemah penyahpepijatan dan jurubahasa berjalan dalam editor yang sama adalah berbeza (mengejutkan). !
Dan kaedah os.path.exists() tidak secara langsung menggunakan laluan dalam sys.path untuk mencari fail, dan ia juga tidak menggunakan pembolehubah persekitaran dalam ~/.bashrc untuk mencari fail, ia hanya menggunakan relatif laluan. dan laluan mutlak untuk mencari fail.
Terdapat dua cadangan Perkara utama ialah menggunakan laluan mutlak.
Laluan mutlak terus ke rentetan berkod keras
(disyorkan) gunakan __file__ untuk menyambung laluan mutlak berbanding fail skrip
Sesetengah orang bertanya untuk tujuan apa laluan yang ditambahkan dalam sys.path.append(path) sebenarnya, laluan yang ditambahkan di sini digunakan terutamanya untuk mengimport pakej import. Iaitu, jika anda ingin menambah direktori tambahan pada laluan carian modul Python, anda boleh menambah direktori tersebut pada senarai sys.path. Ini akan menyebabkan Python menyertakan direktori ini secara automatik semasa mencari modul. Walau bagaimanapun, ambil perhatian bahawa kaedah ini digunakan apabila Python mengimport modul, bukan semasa memanggil kaedah os.path.exists().
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah os.path.exits() dalam python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!