2010-10-27 32 views
178

Tôi sử dụng python để tạo cài đặt thiết lập dự án của mình, nhưng tôi cần trợ giúp lấy các đối số dòng lệnh.Làm cách nào để truy cập các đối số dòng lệnh bằng Python?

tôi đã cố gắng này trên thiết bị đầu cuối:

$python myfile.py var1 var2 var3 

Trong file Python của tôi, tôi muốn sử dụng tất cả các biến có đầu vào.

+0

Module thợ làm bánh là một công cụ tuyệt vời cho viết các ứng dụng dòng lệnh Python. http://pypi.python.org/pypi/Baker/1.02 –

Trả lời

235

Python tutorial explains it:

import sys 

print(sys.argv) 

Cụ thể hơn, nếu bạn chạy python example.py one two three:

>>> import sys 
>>> print(sys.argv) 
['example.py', 'one', 'two', 'three'] 
+4

Xe tăng, nhưng bây giờ tôi cần phải sử dụng var1 của tôi? những gì xảy ra ở đây .. :) – ParisNakitaKejser

+34

Dooh, đã nhận nó (sys.argv [1]): D – ParisNakitaKejser

68
import sys 

sys.argv[1:] 

sẽ cung cấp cho bạn một danh sách các đối số (không bao gồm tên của file python)

16

Bạn có thể sử dụng sys.argv để nhận các đối số dưới dạng danh sách.

Nếu bạn cần truy cập vào các yếu tố riêng lẻ, bạn có thể sử dụng

sys.argv[i] 

nơi i là index, 0 sẽ cung cấp cho bạn tên file python được thực thi. Bất kỳ chỉ mục nào sau đó đều là các đối số được chuyển. đang

21

Python:

import sys 

# main 
param_1= sys.argv[1] 
param_2= sys.argv[2] 
param_3= sys.argv[3] 
print 'Params=', param_1, param_2, param_3 

Invocation:

$python myfile.py var1 var2 var3 

Output:

Params= var1 var2 var3 
3

Nếu bạn gọi nó như thế này: $ python myfile.py var1 var2 var3

import sys 

var1 = sys.argv[1] 
var2 = sys.argv[2] 
var3 = sys.argv[3] 

Tương tự như mảng bạn cũng có sys.argv[0] luôn là thư mục làm việc hiện tại.

1

Một số điều bổ sung mà tôi có thể nghĩ đến.

Như @allsyed cho biết sys.argv đưa ra danh sách các thành phần (bao gồm tên chương trình), vì vậy nếu bạn muốn biết số lượng phần tử được truyền qua dòng lệnh, bạn có thể sử dụng len() để xác định nó. Dựa trên điều này, bạn có thể thiết kế ngoại lệ/thông báo lỗi nếu người dùng không vượt qua số lượng tham số cụ thể.

Ngoài ra nếu bạn đang tìm kiếm một cách tốt hơn để xử lý các đối số dòng lệnh, tôi sẽ đề nghị bạn nhìn vào https://docs.python.org/2/howto/argparse.html

19

tôi khuyên bạn nên argparse mà đến với Python 2.7 và sau này.

Dưới đây là một ví dụ nhỏ:

import argparse 
parser = argparse.ArgumentParser("simple_example") 
parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int) 
args = parser.parse_args() 
print(args.counter + 1) 

và đầu ra cho python3 prog.py -h

usage: simple_example [-h] counter 

positional arguments: 
    counter  counter will be increased by 1 and printed. 

optional arguments: 
    -h, --help show this help message and exit 

và cho python3 prog.py 1 như bạn mong chờ:

2 
Các vấn đề liên quan