Có thể truyền đối số vào tập lệnh Python không?


17

Tôi biết làm thế nào để truyền đối số vào một kịch bản shell. Các đối số này được khai báo trong đường dữ liệu AWS và được chuyển qua. Đây là những gì một kịch bản shell sẽ trông như thế nào:

firstarg=$1
secondarg=$2

Làm thế nào để tôi làm điều này trong Python? Có chính xác như vậy không?


Bạn đã cố gắng tìm kiếm trước khi bạn yêu cầu? Tìm kiếm google để truyền đối số cho tập lệnh python mang lại tất cả thông tin bạn cần. Là liên kết thứ 4, tôi nhận được câu hỏi Đối số dòng lệnh trong Python từ Stackoverflow.
Piotr Dobrogost

3
Tìm kiếm google để truyền đối số cho kịch bản python mang lại bài đăng này .
Davide Andrea

Câu trả lời:


30

Điều này làm việc cho tôi:

import sys
firstarg=sys.argv[1]
secondarg=sys.argv[2]
thirdarg=sys.argv[3]

Đúng, hoạt động. Vì một số lý do, việc lập chỉ mục không bắt đầu từ 0. Vì vậy, sys.argv[0]không có gì bằng
đơn giản là mã hóa vào

14
argv[0]nên là tên kịch bản
Peter Gerhat

3

Bạn có thể sử dụng argv từ sys

from sys import argv
arg1, arg2, arg3, ... = argv

Bạn thực sự có thể đặt một số lượng lớn các đối số trong dòng lệnh. argv sẽ là một danh sách với các đối số. Do đó, nó cũng có thể được gọi là arg1 = sys.argv [0] arg2 = sys.argv [1]. . .

Hãy nhớ rằng sys.argv [0] chỉ đơn giản là tên của chương trình python của bạn. Ngoài ra, các chức năng "eval" và "exec" rất hay khi bạn sử dụng đầu vào dòng lệnh. Thông thường, mọi thứ trong dòng lệnh được hiểu là một chuỗi. Vì vậy, nếu bạn muốn đưa ra một công thức trong dòng lệnh, bạn sử dụng eval ().

>>> x = 1
>>> print eval('x+1')
2

0
import sys
print("Script name ", sys.argv[0])
print(first arsys.argv[1])

1
Bạn nên nhập cái này trong sample.py và gọi với tham số.
ArunSK

ArunSK, bạn có thể chỉnh sửa câu trả lời của bạn để bao gồm nhận xét của bạn. :)
James Skemp
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.