เป็นไปได้ไหมที่จะส่งอาร์กิวเมนต์ไปยังสคริปต์ Python


17

ฉันรู้วิธีส่งอาร์กิวเมนต์ไปยังเชลล์สคริปต์ อาร์กิวเมนต์เหล่านี้ถูกประกาศใน AWS datapipeline และส่งผ่าน นี่คือสิ่งที่เชลล์สคริปต์จะมีลักษณะ:

firstarg=$1
secondarg=$2

ฉันจะทำสิ่งนี้ใน Python ได้อย่างไร มันเหมือนกันหรือไม่


คุณพยายามค้นหาก่อนถามหรือไม่ การค้นหา google สำหรับการส่งผ่านอาร์กิวเมนต์ไปยังสคริปต์ pythonจะนำข้อมูลทั้งหมดที่คุณต้องการ ในฐานะที่เป็นลิงค์ที่ 4 ฉันได้รับคำถามบรรทัดคำสั่งอาร์กิวเมนต์ใน Pythonจาก Stackoverflow
Piotr Dobrogost

3
การค้นหาของ Google สำหรับการส่งผ่านข้อโต้แย้งไปยังสคริปต์หลามนำนี้โพสต์
Davide Andrea

คำตอบ:


31

สิ่งนี้ใช้ได้กับฉัน:

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

ใช่ว่าใช้งานได้ ด้วยเหตุผลบางอย่างการจัดทำดัชนีไม่ได้เริ่มต้นที่ 0 ดังนั้นsys.argv[0]เท่ากับไม่มีอะไร
simplycoding

14
argv[0]ควรเป็นชื่อสคริปต์
Peter Gerhat

3

คุณสามารถใช้ argv จาก sys

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

คุณสามารถใส่จำนวนอาร์กิวเมนต์โดยปริยายในบรรทัดคำสั่ง argv จะเป็นรายการที่มีอาร์กิวเมนต์ ดังนั้นมันจึงสามารถเรียกได้ว่าเป็น arg1 = sys.argv [0] arg2 = sys.argv [1] . .

พึงระลึกไว้ว่า sys.argv [0] เป็นเพียงชื่อของโปรแกรมไพ ธ อนของคุณ นอกจากนี้ฟังก์ชั่น "eval" และ "exec" นั้นดีเมื่อคุณใช้อินพุตบรรทัดคำสั่ง โดยปกติทุกอย่างในบรรทัดคำสั่งจะถูกตีความเป็นสตริง ดังนั้นถ้าคุณต้องการให้สูตรในบรรทัดคำสั่งคุณใช้ eval ()

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

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

1
คุณควรป้อนสิ่งนี้ใน sample.py และโทรด้วยพารามิเตอร์
ArunSK

อรุณ, คุณสามารถแก้ไขคำตอบของคุณเพื่อรวมความคิดเห็นของคุณ :)
James Skemp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.