Hướng dẫn can you call a python script from a python script? - bạn có thể gọi một tập lệnh python từ một tập lệnh python không?

Trong hướng dẫn ngắn này, bạn sẽ thấy cách chạy một kịch bản Python từ một kịch bản Python khác.

Cụ thể hơn, bạn sẽ thấy các bước tới:

  • Chạy một tập lệnh python từ một tập lệnh khác
  • Gọi một biến cụ thể từ tập lệnh python này sang tập lệnh khác

Nhưng trước khi chúng tôi bắt đầu, đây là một mẫu đơn giản mà bạn có thể sử dụng để chạy một tập lệnh Python từ một tập lệnh khác [đối với các tập lệnh Python được lưu trữ trong cùng một thư mục]:

import script_name_to_call

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.

Ví dụ, hãy để giả sử rằng hai tập lệnh Python [được gọi là Python_1 và Python_2] được lưu trữ trong cùng một thư mục:python_1 and python_2] are stored in the same folder:

Python_1 Python_2
python_2

Mục tiêu cuối cùng là chạy tập lệnh Python_2 từ tập lệnh Python_1.

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.

Chẳng hạn, hãy để thêm cú pháp sau trong python_1 & nbsp; script: script:python_1 script:

import python_2
print['what are you up to?']

Where:

  • Dòng đầu tiên của ‘Nhập Python_2, trong tập lệnh Python_1, sẽ gọi tập lệnh Python_2 thứ haipython_1 script, would call the second python_2 script
  • Dòng thứ hai của mã chỉ đơn giản là in biểu thức của ‘Bạn đang làm gì?

Bây giờ, hãy để thêm cú pháp trong tập lệnh Python_2:python_2 script:

print['hello world']

Trong trường hợp này, biểu thức của ‘Hello World, sẽ được in khi chạy tập lệnh thứ hai.

Lưu ý rằng trước tiên bạn phải lưu cú pháp được ghi trong tập lệnh Python_2 trước khi gọi nó từ một tập lệnh khác.save the syntax that was captured in the python_2 script before calling it from another script.

Bước 3: Chạy một tập lệnh Python từ một bản khác

Bây giờ bạn sẽ cần chạy tập lệnh từ hộp Python_1 để gọi tập lệnh thứ hai.python_1 box in order to call the second script.

Lưu ý rằng kết quả của tập lệnh Python_2 sẽ được hiển thị đầu tiên và chỉ sau đó kết quả của tập lệnh Python_1 mới được hiển thị:

hello world
what are you up to?

Gọi một biến cụ thể từ tập lệnh python này sang tập lệnh khác

Bây giờ, hãy xem cách gọi một biến cụ thể [mà chúng ta sẽ gọi ‘X,] từ tập lệnh Python_2 vào tập lệnh Python_1.

Trong trường hợp đó, bạn sẽ cần chỉnh sửa cú pháp trong tập lệnh Python_1 thành phần sau:python_1 script to the following:

import python_2 as p2
print[p2.x]

Tiếp theo, gán một giá trị [ví dụ: ‘Xin chào thế giới] cho biến‘ X, trong tập lệnh Python_2:python_2 script:

x = 'hello world'

Don Tiết quên lưu các thay đổi trong tập lệnh Python_2.python_2 script.

Cuối cùng, hãy chạy cú pháp từ tập lệnh Python_1 và biểu thức ‘Hello World sẽ được in:python_1 script, and the ‘hello world’ expression would be printed:

hello world

Tương tác của các biến từ hai tập lệnh

Trong phần cuối cùng của hướng dẫn này, bạn sẽ thấy các biến từ hai tập lệnh có thể tương tác như thế nào.

Ví dụ, hãy để giả sử rằng tập lệnh python_1 có biến là y = 2, trong khi tập lệnh python_2 có biến là x = 5. Mục tiêu là tổng hợp hai biến đó và hiển thị kết quả.

Đầu tiên, hãy sửa đổi cú pháp trong tập lệnh Python_1 thành phần sau:python_1 script to the following:

import python_2 as p2
y = 2
print[p2.x + y]

Sau đó, thay đổi cú pháp trong tập lệnh Python_2 thành:python_2 script to:

x = 5

Như trước đây, don không quên lưu các thay đổi trong tập lệnh Python_2.python_2 script.

Cuối cùng, hãy chạy cú pháp từ tập lệnh Python_1 và bạn sẽ nhận được ‘7, đó thực sự là tổng của hai biến:python_1 script, and you’ll get ‘7’ which is indeed the sum of the two variables:

7

Tôi có một tập lệnh có tên

hello world
what are you up to?
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
hello world
what are you up to?
2 từ tập lệnh đang chạy dưới dạng dịch vụ.

Ví dụ:

Tệp

hello world
what are you up to?
2:
hello world
what are you up to?
2
:

import python_2
print['what are you up to?']
0

Tệp

hello world
what are you up to?
5:
hello world
what are you up to?
5
:

import python_2
print['what are you up to?']
1

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 badges161 silver badges287 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

import python_2
print['what are you up to?']
2

Service.py

import python_2
print['what are you up to?']
3

Đã 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

import python_2
print['what are you up to?']
4

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]

import python_2
print['what are you up to?']
5

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 ♦ Balphabalpha

48.9K17 Huy hiệu vàng112 Huy hiệu bạc129 Huy hiệu đồng17 gold badges112 silver badges129 bronze badges

8

Cách khác:

Tệp Test1.py:

import python_2
print['what are you up to?']
6

File Service.py:

import python_2
print['what are you up to?']
7

Ư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

6697 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.1291 Huy hiệu vàng7 Huy hiệu bạc2 Huy hiệu đồng1 gold badge7 silver badges2 bronze badges

11

import python_2
print['what are you up to?']
8

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

import python_2
print['what are you up to?']
9

Đã 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

print['hello world']
0

service.py

print['hello world']
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:

print['hello world']
2

Đã trả lời ngày 14 tháng 11 năm 2019 lúc 12:56Nov 14, 2019 at 12:56

FlavioflavioFlavio

6921 Huy hiệu vàng9 Huy hiệu bạc23 Huy hiệu đồng1 gold badge9 silver badges23 bronze badges

2

Bạn không nên làm điều này. Thay vào đó, làm:

test1.py:

print['hello world']
3

service.py

print['hello world']
4

Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:06Jul 27, 2009 at 7:06

Thedzthedzthedz

5.4563 Huy hiệu vàng24 Huy hiệu bạc28 Huy hiệu đồng3 gold badges24 silver badges28 bronze badges

1

Sử dụng

hello world
what are you up to?
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
hello world
what are you up to?
7.

Khi

hello world
what are you up to?
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

hello world
what are you up to?
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 python_2 as p2
print[p2.x]
0], hãy sử dụng tích hợp 'Nhập []'.import[]' builtin.

print['hello world']
5

Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:11Jul 27, 2009 at 7:11

Gimelgimelgimel

80.6K10 Huy hiệu vàng74 Huy hiệu bạc104 Huy hiệu đồng10 gold badges74 silver badges104 bronze badges

3

Như nó đã được đề cập,

import python_2 as p2
print[p2.x]
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.

Nó cũng cần chú ý sử dụng

import python_2 as p2
print[p2.x]
2 để chạy mã. Bạn phải cung cấp
import python_2 as p2
print[p2.x]
3 thích hợp để tránh nhập lỗi hoặc một số vấn đề khác. Tham khảo
import python_2 as p2
print[p2.x]
4 để biết chi tiết.

Đã trả lời ngày 28 tháng 11 năm 2019 lúc 3:02Nov 28, 2019 at 3:02

Chao Chenchao ChenChao Chen

611 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 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.

Đã trả lời ngày 27 tháng 7 năm 2009 lúc 7:04Jul 27, 2009 at 7:04

Anurag uniyalanurag uniyalAnurag Uniyal

83.7K39 Huy hiệu vàng170 Huy hiệu bạc216 Huy hiệu đồng39 gold badges170 silver badges216 bronze badges

1

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,

Giả sử bạn muốn thực thi một tập lệnh có tên là 'đề xuất.py' bên trong một điều kiện 'nếu', sau đó sử dụng,

print['hello world']
6

Kỹ thuật là khác nhau, nhưng hoạt động!

Đã trả lời ngày 23 tháng 12 năm 2019 lúc 20:21Dec 23, 2019 at 20:21

Thêm điều này vào tập lệnh Python của bạn.

print['hello world']
7

Điều này thực thi lệnh đó như thể nó được gõ vào vỏ.

Dharman ♦

28.4K21 Huy hiệu vàng76 Huy hiệu bạc129 Huy hiệu đồng21 gold badges76 silver badges129 bronze badges

Đã trả lời ngày 14 tháng 8 năm 2020 lúc 3:23Aug 14, 2020 at 3:23

Một ví dụ để làm điều đó bằng cách sử dụng quy trình con.

import python_2 as p2
print[p2.x]
5

import python_2 as p2
print[p2.x]
6

import python_2 as p2
print[p2.x]
7

Đã trả lời ngày 27 tháng 5 năm 2021 lúc 6:50May 27, 2021 at 6:50

0

Đây là một ví dụ với thư viện

import python_2 as p2
print[p2.x]
8:

print['hello world']
8

Đã trả lời ngày 23 tháng 1 năm 2019 lúc 11:34Jan 23, 2019 at 11:34

1

Tôi tìm thấy

import python_2 as p2
print[p2.x]
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
hello world
what are you up to?
2 và với
import python_2 as p2
print[p2.x]
1, bạn có thể xử lý việc này trong mã
hello world
what are you up to?
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 python_2 as p2
print[p2.x]
8, tôi không thể quảng bá đối tượng lỗi từ
hello world
what are you up to?
2 đến
hello world
what are you up to?
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 python_2 as p2
print[p2.x]
1 tốt hơn là vì bạn không cần phải gói mã
hello world
what are you up to?
2 vào hàm
x = 'hello world'
8.

Món mã như ví dụ, với mô -đun

x = 'hello world'
9 để nắm bắt văn bản lỗi cuối cùng:

print['hello world']
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:

hello world
what are you up to?
0
hello world
what are you up to?
1

Nhưng theo tiêu đề, sử dụng

hello world
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

Một kịch bản Python có thể gọi một tập lệnh Python khác không?

Có nhiều cách để làm cho một tệp python chạy khác.Sử dụng nó giống như một mô -đun. Quan trọng tệp bạn muốn chạy và chạy các chức năng của nó.Bạn có thể sinh ra một quy trình mới bằng HĐH.Use it like a module. import the file you want to run and run its functions. You can spawn a new process using the os.

Python có thể gọi các chương trình khác không?

Bạn có thể chạy các chương trình khác thông qua các chức năng trong mô -đun HĐH hoặc, trong Python 2.4, bằng cách sử dụng mô -đun quy trình con mới..

Bài Viết Liên Quan

Chủ Đề