Python gọi một tập lệnh Python khác có đối số

1. Sử dụng nó như một mô-đun. nhập tệp bạn muốn chạy và chạy các chức năng của nó. Ví dụ: giả sử bạn muốn nhập tệpB. py vào tập tinS. py, giả sử các tệp nằm trong cùng một thư mục, bên trong tệpA bạn sẽ viết

import fileB

Bây giờ trong tệpS, bạn có thể gọi bất kỳ chức năng nào bên trong tệp như

fileB.my_func()

2. Bạn có thể sử dụng lệnh exec.  

execfile('file.py')

thực thi tập tin. py trong trình thông dịch

3. Bạn có thể sinh ra một quy trình mới bằng cách sử dụng hệ điều hành. lệnh hệ thống

Ví dụ

os.system('python my_file.py')

Python gọi một tập lệnh Python khác có đối số


Python gọi một tập lệnh Python khác có đối số

Đối số dòng lệnh Python cung cấp một cách thuận tiện để chấp nhận một số thông tin tại dòng lệnh trong khi chạy chương trình. Các đối số được đưa ra sau tên của tập lệnh Python được gọi là Đối số dòng lệnh và chúng được sử dụng để chuyển một số thông tin cho chương trình. Ví dụ -

$ python script.py arg1 arg2 arg3

Ở đây tên tập lệnh Python là tập lệnh. py và phần còn lại của ba đối số - arg1 arg2 arg3 là các đối số dòng lệnh cho chương trình. Có ba mô-đun Python sau hữu ích trong việc phân tích cú pháp và quản lý các đối số dòng lệnh

  1. mô-đun hệ thống
  2. mô-đun getopt
  3. mô-đun argparse

sys module - Tham số hệ thống cụ thể

Mô-đun sys của Python cung cấp quyền truy cập vào bất kỳ đối số dòng lệnh nào thông qua sys. argv. Điều này phục vụ hai mục đích -

  • hệ thống. argv là danh sách các đối số dòng lệnh

  • len(sys. argv) là số đối số dòng lệnh

đây sys. argv[0] là chương trình tức là. tên kịch bản

Thí dụ

Hãy xem xét thử nghiệm tập lệnh sau. py -

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

Bây giờ hãy chạy tập lệnh trên như bên dưới. Tất cả các chương trình trong hướng dẫn này cần được chạy từ dòng lệnh, vì vậy chúng tôi không thể cung cấp tùy chọn biên dịch & chạy trực tuyến cho các chương trình này. Vui lòng thử chạy các chương trình này trên máy tính của bạn

$ python test.py arg1 arg2 arg3

Điều này tạo ra kết quả sau -

Number of arguments: 4 arguments.
Argument List: ['test.py', 'arg1', 'arg2', 'arg3']
Như đã đề cập ở trên, đối số đầu tiên luôn là tên tập lệnh và nó cũng được tính vào số lượng đối số

Phân tích đối số dòng lệnh

Python đã cung cấp một mô-đun getopt giúp bạn phân tích các đối số và tùy chọn dòng lệnh. Mô-đun này cung cấp hai chức năng và một ngoại lệ để cho phép phân tích cú pháp đối số dòng lệnh

getopt. phương pháp getopt

Phương pháp này phân tích các tùy chọn dòng lệnh và danh sách tham số. Sau đây là cú pháp đơn giản cho phương thức này -

________số 8_______

Đây là chi tiết của các tham số -

  • args - Đây là danh sách đối số sẽ được phân tích cú pháp

  • tùy chọn − Đây là chuỗi ký tự tùy chọn mà tập lệnh muốn nhận dạng, với các tùy chọn yêu cầu đối số phải được theo sau bởi dấu hai chấm (. )

  • long_options - Đây là tham số tùy chọn và nếu được chỉ định, phải là danh sách các chuỗi có tên của các tùy chọn dài, sẽ được hỗ trợ. Các tùy chọn dài, yêu cầu một đối số phải được theo sau bởi dấu bằng ('='). Để chỉ chấp nhận các tùy chọn dài, các tùy chọn phải là một chuỗi rỗng

Phương pháp này getopt. getopt() trả về giá trị bao gồm hai phần tử. đầu tiên là danh sách các cặp (tùy chọn, giá trị). Thứ hai là danh sách các đối số chương trình còn lại sau khi danh sách tùy chọn bị loại bỏ. Mỗi cặp tùy chọn-và-giá trị được trả về có tùy chọn làm thành phần đầu tiên của nó, bắt đầu bằng dấu gạch nối cho các tùy chọn ngắn (e. g. , '-x') hoặc hai dấu gạch ngang cho các tùy chọn dài (e. g. , '--long-option')

Thí dụ

Sau đây là một chương trình Python nhận ba đối số tại dòng lệnh

  1. Đối số dòng lệnh đầu tiên là -h sẽ được sử dụng để hiển thị trợ giúp sử dụng của chương trình
  2. Đối số thứ hai là -i hoặc --ifile mà chúng tôi đang coi là tệp đầu vào
  3. Đối số thứ ba là -o hoặc --ofile mà chúng tôi đang coi là tệp đầu ra

Đây là đoạn script sau để kiểm tra. py -

import sys, getopt

def main(argv):
   inputfile = ''
   outputfile = ''
   opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
   for opt, arg in opts:
      if opt == '-h':
         print ('test.py -i  -o ')
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print ('Input file is ', inputfile)
   print ('Output file is ', outputfile)

if __name__ == "__main__":
   main(sys.argv[1:])

Bây giờ, hãy chạy tập lệnh trên như sau -

$ python test.py -i IN -o OUT

Điều này sẽ tạo ra kết quả sau

Input file is  IN
Output file is  OUT

Chúng ta cũng có thể chạy chương trình trên như sau

$ python test.py --ifile IN --ofile OUT

Điều này sẽ tạo ra kết quả tương tự như trong trường hợp -i và -o

Input file is  IN
Output file is  OUT

Chúng ta có thể sử dụng tùy chọn h để kiểm tra việc sử dụng chương trình

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
0

Điều này sẽ tạo ra kết quả sau

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
1

getopt ngoại lệ. GetoptError

Hãy xem xét chúng tôi sử dụng một số tùy chọn khác chưa được triển khai trong chương trình. Điều này sẽ đưa ra một ngoại lệ. Ví dụ: hãy thử chạy cùng một chương trình với tùy chọn sai -p như sau

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
2

Điều này sẽ đưa ra một ngoại lệ như dưới đây

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
3

Ngoại lệ này được đưa ra khi một tùy chọn không được công nhận được tìm thấy trong danh sách đối số hoặc khi một tùy chọn yêu cầu đối số không được đưa ra. Đối số cho ngoại lệ là một chuỗi cho biết nguyên nhân gây ra lỗi. Các thuộc tính msg và opt đưa ra thông báo lỗi và tùy chọn liên quan

Thí dụ

Sau đây là một chương trình Python chính xác sử dụng try. ngoại trừ chặn và chụp getopt. Ngoại lệ GetoptError

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
4

Bây giờ, hãy chạy tập lệnh trên như sau -

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
2

Điều này sẽ chạy chương trình một cách mượt mà và sẽ hiển thị cách sử dụng chương trình như chúng tôi đã triển khai trong phần ngoại lệ

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
1

Mô-đun argparse Python

Mô-đun argparse trong Python giúp dễ dàng viết các giao diện dòng lệnh thân thiện với người dùng. Chương trình xác định những đối số mà nó yêu cầu và argparse sẽ tìm ra cách phân tích những đối số đó ra khỏi sys. argv. Mô-đun argparse cũng tự động tạo các thông báo trợ giúp và sử dụng. Mô-đun cũng sẽ báo lỗi khi người dùng cung cấp cho chương trình các đối số không hợp lệ

Thí dụ

Sau đây là một ví dụ sử dụng đơn giản argparse để chấp nhận một tham số tên. <>/p>

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
7

Bạn có thể thêm bao nhiêu đối số tùy thích bằng cách sử dụng phương thức add_argument(), trên thực tế, bạn cũng có thể cung cấp loại dữ liệu bắt buộc của đối số như sau