Ada banyak cara untuk mengimpor file python, semuanya dengan pro dan kontra mereka.
Jangan hanya cepat-cepat memilih strategi impor pertama yang bekerja untuk Anda atau Anda harus menulis ulang basis kode nanti ketika Anda menemukan itu tidak memenuhi kebutuhan Anda.
Saya akan mulai menjelaskan contoh paling mudah # 1, lalu saya akan beralih ke contoh paling profesional dan kuat # 7
Contoh 1, Impor modul python dengan juru bahasa python:
Masukkan ini ke /home/el/foo/fox.py:
def what_does_the_fox_say():
print("vixens cry")
Masuk ke juru bahasa python:
el@apollo:/home/el/foo$ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06)
>>> import fox
>>> fox.what_does_the_fox_say()
vixens cry
>>>
Anda mengimpor fox melalui interpreter python, memanggil fungsi python what_does_the_fox_say()
dari dalam fox.py.
Contoh 2, Gunakan execfile
atau ( exec
dalam Python 3 ) dalam skrip untuk menjalankan file python lain di tempatnya:
Masukkan ini ke /home/el/foo2/mylib.py:
def moobar():
print("hi")
Letakkan ini di /home/el/foo2/main.py:
execfile("/home/el/foo2/mylib.py")
moobar()
jalankan file:
el@apollo:/home/el/foo$ python main.py
hi
Fungsi moobar diimpor dari mylib.py dan tersedia di main.py
Contoh 3, Gunakan dari ... impor ... fungsionalitas:
Masukkan ini ke /home/el/foo3/chekov.py:
def question():
print "where are the nuclear wessels?"
Letakkan ini di /home/el/foo3/main.py:
from chekov import question
question()
Jalankan seperti ini:
el@apollo:/home/el/foo3$ python main.py
where are the nuclear wessels?
Jika Anda mendefinisikan fungsi lain di chekov.py, mereka tidak akan tersedia kecuali Anda import *
Contoh 4, Impor riaa.py jika berada di lokasi file yang berbeda dari tempat diimpor
Masukkan ini ke /home/el/foo4/stuff/riaa.py:
def watchout():
print "computers are transforming into a noose and a yoke for humans"
Masukkan ini ke /home/el/foo4/main.py:
import sys
import os
sys.path.append(os.path.abspath("/home/el/foo4/stuff"))
from riaa import *
watchout()
Menjalankannya:
el@apollo:/home/el/foo4$ python main.py
computers are transforming into a noose and a yoke for humans
Itu mengimpor segala sesuatu di file asing dari direktori yang berbeda.
Contoh 5, gunakan os.system("python yourfile.py")
import os
os.system("python yourfile.py")
Contoh 6, impor file Anda dengan membonceng python startuphook:
Memperbarui: Contoh ini digunakan untuk python2 dan 3, tetapi sekarang hanya berfungsi untuk python2. python3 menyingkirkan set fitur startuphook pengguna ini karena disalahgunakan oleh penulis perpustakaan python keterampilan rendah, menggunakannya untuk menyuntikkan kode mereka ke dalam namespace global, sebelum semua program yang ditentukan pengguna. Jika Anda ingin ini berfungsi untuk python3, Anda harus menjadi lebih kreatif. Jika saya memberi tahu Anda cara melakukannya, pengembang python juga akan menonaktifkan set fitur itu, sehingga Anda dapat melakukannya sendiri.
Lihat: https://docs.python.org/2/library/user.html
Masukkan kode ini ke direktori home Anda di ~/.pythonrc.py
class secretclass:
def secretmessage(cls, myarg):
return myarg + " is if.. up in the sky, the sky"
secretmessage = classmethod( secretmessage )
def skycake(cls):
return "cookie and sky pie people can't go up and "
skycake = classmethod( skycake )
Masukkan kode ini ke main.py Anda (bisa di mana saja):
import user
msg = "The only way skycake tates good"
msg = user.secretclass.secretmessage(msg)
msg += user.secretclass.skycake()
print(msg + " have the sky pie! SKYCAKE!")
Jalankan, Anda harus mendapatkan ini:
$ python main.py
The only way skycake tates good is if.. up in the sky,
the skycookie and sky pie people can't go up and have the sky pie!
SKYCAKE!
Jika Anda mendapatkan kesalahan di sini: ModuleNotFoundError: No module named 'user'
maka itu berarti Anda menggunakan python3, startuphooks dinonaktifkan di sana secara default.
Kredit untuk jist ini jatuh ke: https://github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py Kirim sepanjang kapal Anda.
Contoh 7, Most Robust: Mengimpor file dalam python dengan perintah bare import:
- Buat direktori baru
/home/el/foo5/
- Buat direktori baru
/home/el/foo5/herp
Buat file kosong bernama di __init__.py
bawah herp:
el@apollo:/home/el/foo5/herp$ touch __init__.py
el@apollo:/home/el/foo5/herp$ ls
__init__.py
Buat direktori baru / home / el / foo5 / herp / derp
Di bawah derp, buat __init__.py
file lain :
el@apollo:/home/el/foo5/herp/derp$ touch __init__.py
el@apollo:/home/el/foo5/herp/derp$ ls
__init__.py
Di bawah / home / el / foo5 / herp / derp buat file baru bernama yolo.py
Letakkan ini di sana:
def skycake():
print "SkyCake evolves to stay just beyond the cognitive reach of " +
"the bulk of men. SKYCAKE!!"
Saat kebenaran, Buat file baru /home/el/foo5/main.py
, letakkan ini di sana;
from herp.derp.yolo import skycake
skycake()
Menjalankannya:
el@apollo:/home/el/foo5$ python main.py
SkyCake evolves to stay just beyond the cognitive reach of the bulk
of men. SKYCAKE!!
File kosong __init__.py
berkomunikasi dengan juru bahasa python bahwa pengembang bermaksud direktori ini untuk menjadi paket impor.
Jika Anda ingin melihat posting saya tentang cara memasukkan SEMUA file .py di bawah direktori lihat di sini: https://stackoverflow.com/a/20753073/445131