it-swarm-id.com

os.path.dirname (__ file__) kembali kosong

Saya ingin mendapatkan jalur direktori saat ini di mana file .py dieksekusi.

Misalnya file sederhana D:\test.py dengan kode:

import os

print os.getcwd()
print os.path.basename(__file__)
print os.path.abspath(__file__)
print os.path.dirname(__file__)

Sungguh aneh bahwa hasilnya adalah:

D:\
test.py
D:\test.py
EMPTY

Saya mengharapkan hasil yang sama dari getcwd() dan path.dirname().

Diberi os.path.abspath = os.path.dirname + os.path.basename, mengapa

os.path.dirname(__file__)

kembali kosong?

143
Flake

Karena os.path.abspath = os.path.dirname + os.path.basename tidak berlaku. kami lebih suka memiliki

os.path.dirname(filename) + os.path.basename(filename) == filename

Baik dirname() dan basename() hanya membagi nama file yang dilewati menjadi komponen tanpa memperhitungkan direktori saat ini. Jika Anda ingin juga mempertimbangkan direktori saat ini, Anda harus melakukannya secara eksplisit.

Untuk mendapatkan dirname dari path absolut, gunakan

os.path.dirname(os.path.abspath(__file__))
233
Sven Marnach

dapat digunakan juga seperti itu:

dirname(dirname(abspath(__file__)))
8
adnan dogar
print(os.path.join(os.path.dirname(__file__))) 

Anda juga bisa menggunakan cara ini

4
Mikhail
os.path.split(os.path.realpath(__file__))[0]

os.path.realpath(__file__)return abspath skrip saat ini; os.path.split (abspath) [0] mengembalikan dir saat ini

4
RongyanZheng
import os.path

dirname = os.path.dirname(__file__) or '.'
2
Deve