Bagaimana saya bisa mendapatkan nama file dan nomor baris dalam skrip python.
Tepatnya informasi file yang kami dapatkan dari pengecualian traceback. Dalam kasus ini tanpa menimbulkan pengecualian.
Berkat mcandre, jawabannya adalah:
#python3
from inspect import currentframe, getframeinfo
frameinfo = getframeinfo(currentframe())
print(frameinfo.filename, frameinfo.lineno)
import inspect inspect.getframeinfo(inspect.currentframe()).lineno
currentframe()
dipanggil, yang berarti Anda tidak dapat menyederhanakan ini lebih darigetframeinfo(currentframe()).lineno
(jika Anda hanya peduli tentang nomor baris dan bukan nama file). Lihat docs.python.org/2/library/inspect.html#inspect.currentframeApakah Anda menggunakan
currentframe().f_back
tergantung pada apakah Anda menggunakan suatu fungsi atau tidak.Memanggil inspeksi langsung:
Memanggil fungsi yang melakukannya untuk Anda:
sumber
Berguna jika digunakan dalam file umum - mencetak nama file, nomor baris dan fungsi pemanggil:
sumber
Nama file :
Garis :
(tidak
inspect.currentframe().f_back.f_lineno
seperti yang disebutkan di atas)sumber
NameError: global name '__file__' is not defined
pada interpreter Python saya:Python 2.7.6 (default, Sep 26 2014, 15:59:23)
. Lihat stackoverflow.com/questions/9271464/…Lebih baik menggunakan sys juga-
Outputnya adalah:
sumber
Hanya untuk berkontribusi,
ada
linecache
modul di python, berikut adalah dua tautan yang dapat membantu.dokumentasi modul
linecache kode sumber linecache
Dalam arti tertentu, Anda dapat "membuang" seluruh file ke dalam cache, dan membacanya dengan data linecache.cache dari kelas.
Untuk info tambahan, untuk penanganan error, Anda cukup menggunakan
sumber
sumber
__file__
: Lihat stackoverflow.com/questions/3056048/…Di Python 3 Anda dapat menggunakan variasi pada:
Dalam kode, Anda kemudian dapat menggunakan:
Untuk menghasilkan:
Di mana 123 dan 124 adalah saluran yang digunakan untuk membuat panggilan.
sumber
Inilah yang berhasil bagi saya untuk mendapatkan nomor baris dengan Python 3.7.3 di VSCode 1.39.2 (
dmsg
adalah mnemonik saya untuk pesan debug):Untuk memanggil menampilkan variabel
name_s
dan nilainya:Outputnya terlihat seperti ini:
sumber