Có nhiều cách để nhập tệp python, tất cả đều có ưu và nhược điểm của chúng.
Đừng vội vàng chọn chiến lược nhập đầu tiên phù hợp với bạn nếu không bạn sẽ phải viết lại cơ sở mã sau này khi bạn thấy nó không đáp ứng nhu cầu của bạn.
Tôi sẽ bắt đầu giải thích ví dụ dễ nhất # 1, sau đó tôi sẽ chuyển sang ví dụ mạnh mẽ và chuyên nghiệp nhất # 7
Ví dụ 1, Nhập mô-đun python với trình thông dịch python:
Đặt cái này trong /home/el/foo/fox.py:
def what_does_the_fox_say():
print("vixens cry")
Nhận được vào trình thông dịch 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
>>>
Bạn đã nhập cáo thông qua trình thông dịch python, gọi hàm python what_does_the_fox_say()
từ bên trong fox.py.
Ví dụ 2, Sử dụng execfile
hoặc ( exec
trong Python 3 ) trong tập lệnh để thực thi tệp python khác tại chỗ:
Đặt cái này trong /home/el/foo2/mylib.py:
def moobar():
print("hi")
Đặt cái này trong /home/el/foo2/main.py:
execfile("/home/el/foo2/mylib.py")
moobar()
chạy tập tin:
el@apollo:/home/el/foo$ python main.py
hi
Hàm moobar đã được nhập từ mylib.py và được cung cấp trong main.py
Ví dụ 3, Sử dụng từ ... nhập ... chức năng:
Đặt cái này trong /home/el/foo3/chekov.py:
def question():
print "where are the nuclear wessels?"
Đặt cái này trong /home/el/foo3/main.py:
from chekov import question
question()
Chạy nó như thế này:
el@apollo:/home/el/foo3$ python main.py
where are the nuclear wessels?
Nếu bạn đã xác định các chức năng khác trong chekov.py, chúng sẽ không khả dụng trừ khi bạn import *
Ví dụ 4, Nhập riaa.py nếu nó ở một vị trí tệp khác với vị trí được nhập
Đặt cái này vào /home/el/foo4/ ware / riaa.py:
def watchout():
print "computers are transforming into a noose and a yoke for humans"
Đặt cái này trong /home/el/foo4/main.py:
import sys
import os
sys.path.append(os.path.abspath("/home/el/foo4/stuff"))
from riaa import *
watchout()
Chạy nó:
el@apollo:/home/el/foo4$ python main.py
computers are transforming into a noose and a yoke for humans
Mà nhập mọi thứ trong tệp nước ngoài từ một thư mục khác.
Ví dụ 5, sử dụng os.system("python yourfile.py")
import os
os.system("python yourfile.py")
Ví dụ 6, nhập tệp của bạn thông qua cõng khởi động python:
Cập nhật: Ví dụ này được sử dụng để làm việc cho cả python2 và 3, nhưng bây giờ chỉ hoạt động cho python2. python3 đã loại bỏ bộ tính năng khởi động người dùng này vì nó bị lạm dụng bởi những người viết thư viện python có kỹ năng thấp, sử dụng nó để tiêm mã của họ vào không gian tên toàn cầu, trước tất cả các chương trình do người dùng định nghĩa. Nếu bạn muốn nó hoạt động cho python3, bạn sẽ phải sáng tạo hơn. Nếu tôi cho bạn biết làm thế nào để làm điều đó, các nhà phát triển python cũng sẽ vô hiệu hóa bộ tính năng đó, vì vậy bạn tự mình làm.
Xem: https://docs.python.org/2/l Library / user.html
Đặt mã này vào thư mục nhà của bạn trong ~/.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 )
Đặt mã này vào main.txt của bạn (có thể ở bất cứ đâu):
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!")
Chạy nó, bạn sẽ nhận được điều này:
$ 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!
Nếu bạn gặp lỗi ở đây: ModuleNotFoundError: No module named 'user'
thì có nghĩa là bạn đang sử dụng python3, startuphooks bị tắt ở đó theo mặc định.
Tín dụng cho ý kiến này được gửi tới: https://github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py Gửi dọc theo thuyền của bạn.
Ví dụ 7, Mạnh mẽ nhất: Nhập tệp trong python bằng lệnh nhập trần:
- Tạo một thư mục mới
/home/el/foo5/
- Tạo một thư mục mới
/home/el/foo5/herp
Tạo một tập tin trống có tên __init__.py
theo herp:
el@apollo:/home/el/foo5/herp$ touch __init__.py
el@apollo:/home/el/foo5/herp$ ls
__init__.py
Tạo một thư mục mới / home / el / foo5 / herp / derp
Trong derp, tạo một __init__.py
tệp khác :
el@apollo:/home/el/foo5/herp/derp$ touch __init__.py
el@apollo:/home/el/foo5/herp/derp$ ls
__init__.py
Dưới / home / el / foo5 / herp / derp tạo một tệp mới có tên yolo.py
Đặt cái này vào đó:
def skycake():
print "SkyCake evolves to stay just beyond the cognitive reach of " +
"the bulk of men. SKYCAKE!!"
Thời điểm của sự thật, Tạo tập tin mới /home/el/foo5/main.py
, đặt cái này vào đó;
from herp.derp.yolo import skycake
skycake()
Chạy nó:
el@apollo:/home/el/foo5$ python main.py
SkyCake evolves to stay just beyond the cognitive reach of the bulk
of men. SKYCAKE!!
Tệp trống __init__.py
liên lạc với trình thông dịch python mà nhà phát triển dự định thư mục này là một gói có thể nhập được.
Nếu bạn muốn xem bài đăng của tôi về cách bao gồm TẤT CẢ các tệp .py trong thư mục, hãy xem tại đây: https://stackoverflow.com/a/20753073/445131