Bagaimanakah Anda Boleh Menentukan Laluan Fail Pelaksanaan dalam Python dengan Amanah?

DDD
Lepaskan: 2024-10-25 09:14:29
asal
892 orang telah melayarinya

How Can You Reliably Determine the Execution File's Path in Python?

Menentukan Laluan Fail Pelaksanaan dalam Python

Pengenalan

Mengenal pasti laluan ke skrip Python yang sedang melaksanakan adalah aspek penting untuk pelbagai aplikasi. Walau bagaimanapun, mencari pendekatan "sejagat" yang berfungsi merentasi senario yang berbeza boleh menjadi mencabar. Artikel ini meneroka beberapa kaedah dan menangani batasan yang berkaitan dengannya, akhirnya membentangkan penyelesaian yang komprehensif.

Batasan Kaedah Tradisional

  • path = os.path.abspath(os. path.dirname(sys.argv[0])): Pendekatan ini gagal apabila skrip dilaksanakan daripada skrip lain dalam direktori lain melalui kaedah seperti execfile.
  • path = os.path.abspath(os.path.dirname(__file__)): Kaedah ini mungkin tidak berfungsi dalam kes di mana:

    • fail atribut tidak ada (mis. , pelaksanaan Py2exe)
    • Kod dilaksanakan daripada IDLE menggunakan execute()
    • fail tidak ditakrifkan (cth., Mac OS X v10.6)

Penyelesaian Komprehensif

Untuk mendapatkan laluan fail yang sedang dilaksanakan tanpa mengira konteks pelaksanaan, gabungan fungsi daripada modul inspect dan os boleh digunakan:

from inspect import getsourcefile
from os.path import abspath

path = abspath(getsourcefile(lambda:0))
Salin selepas log masuk

Penyelesaian ini menyediakan pendekatan konsisten yang mendapatkan semula laluan fail sumber dalam pelbagai senario, termasuk:

  • Pelaksanaan langsung skrip utama
  • Pelaksanaan daripada skrip lain
  • Pelaksanaan dalam fungsi
  • Pelaksanaan dalam penterjemah (cth., IDLE)

Contoh Ujian

Memandangkan struktur direktori berikut:

C:.
|   a.py
\---subdir
        b.py
Salin selepas log masuk

Dan kod dalam a.py:

#! /usr/bin/env python
import os, sys

print "a.py: os.getcwd()=", os.getcwd()
print

execfile("subdir/b.py")
Salin selepas log masuk

Dan kod dalam subdir/b.py:

#! /usr/bin/env python
import os, sys

print "b.py: os.getcwd()=", os.getcwd()
print
Salin selepas log masuk

Output python a.py ialah :

a.py: os.getcwd()= C:\
b.py: os.getcwd()= C:\zzz
Salin selepas log masuk

Ini menunjukkan bahawa os.getcwd() mencerminkan direktori kerja konteks pelaksanaan, yang mungkin berbeza daripada lokasi skrip yang dilaksanakan. Sebaliknya, penyelesaian yang dicadangkan (abspath(getsourcefile(lambda:0))) secara konsisten menghasilkan laluan fail sumber skrip, tanpa mengira konteks pelaksanaan.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menentukan Laluan Fail Pelaksanaan dalam Python dengan Amanah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!