Odkud si fce v modulu může zjistí path zdrojáku hl.skriptu ? – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Odkud si fce v modulu může zjistí path zdrojáku hl.skriptu ? – Python – Fórum – Programujte.comOdkud si fce v modulu může zjistí path zdrojáku hl.skriptu ? – Python – Fórum – Programujte.com

 

Petroff0
Věrný člen
22. 3. 2010   #1
-
0
-

jedna z funkcí v modulu má vrátit jméno/cestu souboru xxxx.py (main)skriptu
Při běžném spuštění lze přečíst v argv[0]
Toto však nelze použít při testování modulu v prostředí IDLE (neboť tam je: argv[0]=='' při spuštění:

def runf(name="tutor_examp",pth="C:\\Program Files\\Python\\skripty\\"): 

execfile(pth+name+".py")

runf() # nebo runf(examp2) , ...atd.
Soudím, že název je někde uložen - např. pokud ve skriptu dojde k neošetřené výjimce, je název mezi vypsanými objekty:
execfile("C:\\Program Files\\Python\\skripty\\examples.py")

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
execfile("C:\\Program Files\\Python\\skripty\\examples.py")
File "C:\Program Files\Python\skripty\examples.py", line 81, in <module>
main()
File "C:\Program Files\Python\skripty\examples.py", line 75, in main
xkruh_test()

Nahlásit jako SPAM
IP: 89.102.97.–
Petroff0
Věrný člen
28. 3. 2010   #2
-
0
-

Zkusil jsem použít iteraci přes rámce:

MODUL: proSOURCE.py

import sys

def getFILE(FRAME=None,OLD=None):
try:
NEW = FRAME.f_code.co_filename
return NEW != OLD and OLD and NEW or getFILE(FRAME.f_back,NEW)
except AttributeError:
return getFILE(sys.exc_info()[2].tb_frame,None)

MAIN-Script : test.py
import proSOURCE

def main():
print proSOURCE.getFILE() #==> Vypíše <test.py> jako úplnou cestu
main()

Funguje:
v IDLE: execfile("test.py")
v Konzole: test.py
python test.py (...zde nevrátí úplnou cestu, takže nutno zachovat aktuální adresář)

Nahlásit jako SPAM
IP: 89.102.97.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 20 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý