Portál AbcLinuxu, 9. května 2025 19:47

Dotaz: PYTHON - Jak načíst soubory

4.5.2015 18:56 Kolemjdoucí
PYTHON - Jak načíst soubory
Přečteno: 634×
Odpovědět | Admin
Ahoj, nemůžu nikde najít, jak se načítají soubory z určitého umístnění. Potřeboval bych načíst soubor který obsahuje nějaké funkce. Zkoušel jsem
import /root/python/srcfiles/myscript.py
ale nefunguje to. Díky za info

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

xxxxxx avatar 4.5.2015 19:19 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Můžete udělat tohle:
import sys

sys.path.append('/root/python/srcfiles')

import myscript
4.5.2015 19:21 Kolemjdoucí
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Děkuji a ten script se jen načte, nebo se hned provede ? Děkuji PS: Musím do každého souboru taky vkládat "#!/usr/bin/python" a musí mít soubor příponu.py nebo pyc ?
xxxxxx avatar 4.5.2015 19:28 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Jen se načte. A #!/usr/bin/python nemusíte vkládat. Když spouštíte skripty jako: python somescript.py, není to nutné. Pouze pokud by měl být soubor spustitelní (chmod +x somescript.py), tak je to nutné vložit, aby se vybral interpreter pythonu a ne něčeho jiného.

Přípona .py je pro samotné skripty, které píšete. Přípona .pyc je pro skripty zkompilované do bytecode.
xxxxxx avatar 4.5.2015 19:31 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
*spustitelný samozřejmě
4.5.2015 21:39 pako
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
import mymodule
Ten module se samozřejmě jenom načte a provede. ;) Proto často potkáte:
if __name__ == "__main__": ...
Aby se při importu načetlo, ale nic nespouštělo, dokud si to nezavoláme.
xxxxxx avatar 4.5.2015 21:43 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Děkuji za opravu :)
xxxxxx avatar 4.5.2015 19:23 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Když se podíváte na sys.path, najdete tam standardní umístění knihoven. Přidáním cesty do sys.path jen říkáte, kde má python hledat.

Alternativou by bylo někde v /usr/lib/python.../ nebo v jiné ze standardních cest vytvořit symlink: ln -s /root/python/srcfiles

Doporučuji se také podívat na knihovnu importlib.
4.5.2015 19:20 NN
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Python hleda modul v PYTHONPATH a importuje se bez sufixu '.py'. Stejnou informaci by jsi se dozvedel i z manualu pro import..
4.5.2015 19:42 Kolemjdoucí
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky za cenné informace, stejně mi to ale nejde :-( pořád mi to vypisuje "except (Error)". Co se mu nelíbí ?

soubor start.py
#!/usr/bin/python
try:
     import sys
     sys.path.append('/root/python/srcfiles')
     import myscript.py
     jen_test()
except:
     print("Error")
     sys.exit(1)
else:
     print("Success")
     sys.exit(0)
soubor myscript.py
def jen_test():
    print("jen test") 
xxxxxx avatar 4.5.2015 19:51 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
import myscript.py # Špatně
import myscript # Správně
Před chvílí to psal NN.
4.5.2015 19:56 Kolemjdoucí
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Díky, nevěděl jsem co je to "sufix". Už to jde. Moc děkuji všem za pomoc!
4.5.2015 20:05 diggit
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory

Jak psal NN, importuje se bez suffixu .py

import myscript

Pokud chceš psát vlastní moduly, koukni nejdřív do dokumentace

Pak tedy musíš volat funkce modulu takto

myscript.jen_test()
10.5.2015 17:04 Kolemjdoucí
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Tak jsem to opravil, stále chyba: AttributeError: 'module' object has no attribute 'jen_test'
Soubor /root/python/start.py

#!/usr/bin/python
try:
     import sys
     sys.path.append('/root/python/srcfiles')
     import myscript
     myscript.jen_test()
except:
     print("Error")
     sys.exit(1)
else:
     print("Success")
     sys.exit(0)

#######

soubor /root/python/srcfiles/myscript.py
def jen_test():
    print("jen test") 
Tak co se mu ještě nelíbí ? Dík
10.5.2015 17:31 alfonz
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Odstranťe try except část, je zbytečná, python script ukončí automaticky podle toho jak dopadne. Pokud dopadne import, tak by již měla funkce normálně fungovat, otázkou je, jestli nenaimportujete něco jiného.

Doporučuji zkusit důležitou část kódu pouze v interpretru.

případně po importu dejte dir(myscript) nebo help(myscript) aby bylo vidět odkud došlo k importu. Btw proč to nemáte ve stejné složce? ušetříte si spoustu problémů. Mimo to aby to byl modul/package bylo by správně mít soubor __init__.py.
11.5.2015 03:01 pako
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
dir(myscript) bez print ve skriptu moc neprozradí. Co se načetlo: print(os.path.abspath(myscript.__file__)) (samozřejmě po import os; absolutně pro jistotu, někteří lidé občas skáčí po fs).
12.5.2015 11:21 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: PYTHON - Jak načíst soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Potřebuješ pochopit co je to serializace. Je mnoho způsobů jak vyřešit tvůj problém. Pro nalezení optímáolního způsobu budeš muset buď uvézt víc informací, nebo si přečíst http://en.wikipedia.org/wiki/Serialization
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.