Hướng dẫn how do you call a python program? - làm thế nào để bạn gọi một chương trình python?

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.

Hướng dẫn how do you call a python program? - làm thế nào để bạn gọi một chương trình python?

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

Hướng dẫn how do you call a python program? - làm thế nào để bạn gọi một chương trình python?

Balpha ♦ Balphabalpha

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

Hướng dẫn how do you call a python program? - làm thế nào để bạn gọi một chương trình python?

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
0

service.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
3

service.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

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:

  • 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

Hướng dẫn how do you call a python program? - làm thế nào để bạn gọi một chương trình python?

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

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 ()'.39 gold badges170 silver badges216 bronze badges

1

Gimelgimel

Huy hiệu vàng 80,5k10

# Lots of stuff here
test1.py # do whatever is in test1.py
6

Như 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

Hướng dẫn how do you call a python program? - làm thế nào để bạn gọi một chương trình python?

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

Hướng dẫn how do you call a python program? - làm thế nào để bạn gọi một chương trình python?

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()
5

import test1

def service_func():
    print 'service func'

if __name__ == '__main__':
    # service.py executed as script
    # do something
    service_func()
    test1.some_func()
6

import test1

def service_func():
    print 'service func'

if __name__ == '__main__':
    # service.py executed as script
    # do something
    service_func()
    test1.some_func()
7

Anurag 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
8

Quá 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

Hướng dẫn how do you call a python program? - làm thế nào để bạn gọi một chương trình python?

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()
0
def some_func():
    print 'in test 1, unproductive'

if __name__ == '__main__':
    # test1.py executed as script
    # do something
    some_func()
1

Như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

Hướng dẫn how do you call a python program? - làm thế nào để bạn gọi một chương trình python?

Làm cách nào để chạy kịch bản Python từ một kịch bản Python?

Các bước để chạy một kịch bản Python từ một kịch bản khác..
Bước 1: Đặt các tập lệnh Python vào cùng một thư mục.Để bắt đầu, hãy đặt các tập lệnh Python của bạn vào cùng một thư mục.....
Bước 2: Thêm cú pháp.Tiếp theo, thêm cú pháp vào từng tập lệnh của bạn.....
Bước 3: Chạy một kịch bản Python từ một bản khác ..

Làm cách nào để chạy một chương trình Python trên máy tính xách tay của tôi?

Để cài đặt Python bằng Microsoft Store: Chuyển đến menu Bắt đầu của bạn (biểu tượng Windows bên trái bên trái), nhập "Microsoft Store", chọn liên kết để mở cửa hàng.Khi cửa hàng mở, chọn tìm kiếm từ menu trên bên phải và nhập "Python".Chọn phiên bản Python nào bạn muốn sử dụng từ các kết quả trong các ứng dụng.

Chúng ta có thể gọi mã python từ c không?

Một tham chiếu đến một Python có thể gọi hiện tại cần được truyền vào, để sử dụng chức năng này.Để làm điều đó có nhiều cách như - chỉ cần viết mã C để trích xuất một biểu tượng từ một mô -đun hiện có hoặc có một đối tượng có thể gọi được chuyển vào một mô -đun mở rộng.. To do that there are many ways like – simply writing C code to extract a symbol from an existing module or having a callable object passed into an extension module.