Tôi có một tập lệnh có tên
def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
2 không có trong một mô -đun. Nó chỉ có mã nên thực thi khi bản thân tập lệnh được chạy. Không có chức năng, lớp, phương thức, v.v. Tôi có một tập lệnh khác chạy như một dịch vụ. Tôi muốn gọi def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
2 từ tập lệnh đang chạy dưới dạng dịch vụ.Ví dụ:
Tệp
def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
2:def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
2:print "I am a test"
print "see! I do nothing productive."
Tệp
def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
5:def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
5:# Lots of stuff here
test1.py # do whatever is in test1.py
Tôi biết một phương pháp đang mở tệp, đọc nội dung và về cơ bản đánh giá nó. Tôi cho rằng có một cách tốt hơn để làm điều này. Hoặc ít nhất tôi hy vọng như vậy.
Martineau
Huy hiệu vàng 116K2525 gold badges160 silver badges285 bronze badges
hỏi ngày 27 tháng 7 năm 2009 lúc 6:52Jul 27, 2009 at 6:52
Josh Smeatonjosh SmeatonJosh Smeaton
47K24 Huy hiệu vàng127 Huy hiệu bạc164 Huy hiệu đồng24 gold badges127 silver badges164 bronze badges
3
Cách thông thường để làm điều này là một cái gì đó như sau đây.
test1.py
def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
Service.py
import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:12Jul 27, 2009 at 7:12
6
Điều này có thể xảy ra trong Python 2 bằng cách sử dụng
execfile["test2.py"]
Xem tài liệu để xử lý các không gian tên, nếu quan trọng trong trường hợp của bạn.
Trong Python 3, điều này có thể sử dụng [nhờ @Fantastory]
exec[open["test2.py"].read[]]
Tuy nhiên, bạn nên xem xét sử dụng một cách tiếp cận khác; Ý tưởng của bạn [từ những gì tôi có thể thấy] trông không sạch sẽ lắm.
Woodsy
3.0572 Huy hiệu vàng27 Huy hiệu bạc48 Huy hiệu đồng2 gold badges27 silver badges48 bronze badges
Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:03Jul 27, 2009 at 7:03
Balpha ♦ Balpha♦balpha
48.9K17 Huy hiệu vàng112 Huy hiệu bạc129 Huy hiệu đồng17 gold badges112 silver badges129 bronze badges
7
Cách khác:
Tệp Test1.py:
print "test1.py"
File Service.py:
import subprocess
subprocess.call["test1.py", shell=True]
Ưu điểm của phương pháp này là bạn không phải chỉnh sửa tập lệnh Python hiện có để đặt tất cả mã của nó vào chương trình con.
Tài liệu: Python 2, Python 3
Jacktose
6707 Huy hiệu bạc21 Huy hiệu Đồng7 silver badges21 bronze badges
Đã trả lời ngày 27 tháng 6 năm 2012 lúc 16:01Jun 27, 2012 at 16:01
Dick Goodwindick GoodwinDick Goodwin
1.1091 Huy hiệu vàng7 Huy hiệu bạc2 Huy hiệu đồng1 gold badge7 silver badges2 bronze badges
11
import os
os.system["python myOtherScript.py arg1 arg2 arg3"]
Sử dụng hệ điều hành, bạn có thể thực hiện các cuộc gọi trực tiếp đến thiết bị đầu cuối của bạn. Nếu bạn muốn được cụ thể hơn nữa, bạn có thể kết hợp chuỗi đầu vào của mình với các biến cục bộ, tức là.
command = 'python myOtherScript.py ' + sys.argv[1] + ' ' + sys.argv[2]
os.system[command]
Đã trả lời ngày 5 tháng 12 năm 2016 lúc 8:07Dec 5, 2016 at 8:07
Alex Mapleyalex MapleyAlex Mapley
6636 Huy hiệu bạc11 Huy hiệu đồng6 silver badges11 bronze badges
2
Nếu bạn muốn Test1.py vẫn có thể thực thi với chức năng giống như khi nó được gọi là Inside Service.py, thì hãy làm một cái gì đó như:
test1.py
# Lots of stuff here
test1.py # do whatever is in test1.py
0service.py
# Lots of stuff here
test1.py # do whatever is in test1.py
1Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:11Jul 27, 2009 at 7:11
2
Tôi thích Runpy:
# Lots of stuff here
test1.py # do whatever is in test1.py
2Đã trả lời ngày 14 tháng 11 năm 2019 lúc 12:56Nov 14, 2019 at 12:56
FlavioflavioFlavio
6821 Huy hiệu vàng9 Huy hiệu bạc23 Huy hiệu đồng1 gold badge9 silver badges23 bronze badges
1
Bạn không nên làm điều này. Thay vào đó, làm:
test1.py:
# Lots of stuff here
test1.py # do whatever is in test1.py
3service.py
# Lots of stuff here
test1.py # do whatever is in test1.py
4Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:06Jul 27, 2009 at 7:06
Thedzthedzthedz
5.4463 Huy hiệu vàng24 Huy hiệu bạc28 Huy hiệu đồng3 gold badges24 silver badges28 bronze badges
1
Sử dụng
def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
6 cho lần sử dụng đầu tiên - nó sẽ thực thi tập lệnh. Đối với các yêu cầu sau này, hãy coi tập lệnh là một mô -đun đã nhập và gọi phương thức def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
7.Khi
8 được thực thi:def some_func[]: print 'in test 1, unproductive' if __name__ == '__main__': # test1.py executed as script # do something some_func[]
- Các mô-đun Python Mã được biên dịch lại và mã cấp độ mô-đun được sắp xếp lại, xác định một tập hợp các đối tượng mới được liên kết với các tên trong từ điển mô-đun. Chức năng init của các mô -đun mở rộng không được gọimodule-level code reexecuted, defining a new set of objects which are bound to names in the module’s dictionary. The init function of extension modules is not called
Một kiểm tra đơn giản của
def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
9 có thể được sử dụng để gọi hành động thích hợp. Để tiếp tục gọi tên tập lệnh dưới dạng chuỗi [import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
0], hãy sử dụng tích hợp 'Nhập []'.import[]' builtin.# Lots of stuff here
test1.py # do whatever is in test1.py
5
Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:11Jul 27, 2009 at 7:11
Tôi thích Runpy:gimel
Đã trả lời ngày 14 tháng 11 năm 2019 lúc 12:5610 gold badges74 silver badges104 bronze badges
3
Flavioflavio
6821 Huy hiệu vàng9 Huy hiệu bạc23 Huy hiệu đồng
Bạn không nên làm điều này. Thay vào đó, làm:
Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:06Nov 28, 2019 at 3:02
ThedzthedzChao Chen
5.4463 Huy hiệu vàng24 Huy hiệu bạc28 Huy hiệu đồng1 silver badge4 bronze badges
Sử dụng
def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
6 cho lần sử dụng đầu tiên - nó sẽ thực thi tập lệnh. Đối với các yêu cầu sau này, hãy coi tập lệnh là một mô -đun đã nhập và gọi phương thức def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
7.
Khi
def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
8 được thực thi:Jul 27, 2009 at 7:04
Các mô-đun Python Mã được biên dịch lại và mã cấp độ mô-đun được sắp xếp lại, xác định một tập hợp các đối tượng mới được liên kết với các tên trong từ điển mô-đun. Chức năng init của các mô -đun mở rộng không được gọiAnurag Uniyal
Một kiểm tra đơn giản của
9 có thể được sử dụng để gọi hành động thích hợp. Để tiếp tục gọi tên tập lệnh dưới dạng chuỗi [def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
0], hãy sử dụng tích hợp 'Nhập []'.39 gold badges170 silver
badges216 bronze badgesimport test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
1
Gimelgimel
Huy hiệu vàng 80,5k10
# Lots of stuff here
test1.py # do whatever is in test1.py
6Như nó đã được đề cập,
import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
1 là một cách hay để chạy các tập lệnh hoặc mô -đun khác từ tập lệnh hiện tại.Nhân tiện, điều khá phổ biến đối với trình theo dõi hoặc trình gỡ lỗi để thực hiện việc này và trong các phương thức như nhập trực tiếp tệp hoặc chạy tệp trong quy trình con thường không hoạt động.Dec 23, 2019 at 20:21
Nó cũng cần chú ý sử dụng
import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
2 để chạy mã. Bạn phải cung cấp import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
3 thích hợp để tránh nhập lỗi hoặc một số vấn đề khác. Tham khảo import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
4 để biết chi tiết.# Lots of stuff here
test1.py # do whatever is in test1.py
7Đã trả lời ngày 28 tháng 11 năm 2019 lúc 3:02
Chao Chenchao Chen♦
611 Huy hiệu bạc4 Huy hiệu đồng21 gold badges75 silver badges127 bronze badges
Tại sao không chỉ nhập Test1? Mỗi tập lệnh Python là một mô -đun. Một cách tốt hơn là có một chức năng, ví dụ: Main/Run trong Test1.Py, nhập Test1 và Run test1.main []. Hoặc bạn có thể thực thi Test1.py như một quy trình con.Aug 14, 2020 at 3:23
Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:04
import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
5import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
6import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
7Anurag uniyalanurag uniyalMay 27, 2021 at 6:50
0
83.5K39 Huy hiệu vàng170 Huy hiệu bạc216 Huy hiệu đồng
# Lots of stuff here
test1.py # do whatever is in test1.py
8Quá trình này có phần không chính thống, nhưng sẽ hoạt động trên tất cả các phiên bản Python,Jan 23, 2019 at 11:34
1
Tôi tìm thấy
import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
1 Thư viện tiêu chuẩn thuận tiện nhất. Tại sao? Bạn phải xem xét trường hợp khi lỗi được nêu trong tập lệnh def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
2 và với import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
1, bạn có thể xử lý việc này trong mã def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
5. Cả văn bản Traceback [để ghi lỗi trong tệp nhật ký để điều tra trong tương lai] và đối tượng lỗi [để xử lý lỗi tùy thuộc vào loại của nó]: Khi với thư viện import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
8, tôi không thể quảng bá đối tượng lỗi từ def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
2 đến def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
5, chỉ đầu ra theo dõi. Ngoài ra, so sánh với giải pháp "Nhập Test1.py dưới dạng mô -đun", import test1
def service_func[]:
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func[]
test1.some_func[]
1 tốt hơn là vì bạn không cần phải gói mã def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
2 vào hàm execfile["test2.py"]
8.Món mã như ví dụ, với mô -đun
execfile["test2.py"]
9 để nắm bắt văn bản lỗi cuối cùng:# Lots of stuff here
test1.py # do whatever is in test1.py
9Đã trả lời ngày 14 tháng 4 lúc 12:26Apr 14 at 12:26
Theo ví dụ đã cho, đây là cách tốt nhất:
def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
0def some_func[]:
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func[]
1Nhưng theo tiêu đề, sử dụng
exec[open["test2.py"].read[]]
0 là cách tốt nhất như nhỏ và nó hoạt động. Điều này sẽ thực thi các tập tin được chỉ định. Phiên bản Python của tôi là 3.x +.Đã trả lời ngày 1 tháng 3 lúc 15:47Mar 1 at 15:47