อาร์กิวเมนต์ Pycharm และ sys.argv


93

ฉันกำลังพยายามดีบักสคริปต์ซึ่งใช้อาร์กิวเมนต์บรรทัดคำสั่งเป็นอินพุต อาร์กิวเมนต์คือไฟล์ข้อความในไดเร็กทอรีเดียวกัน สคริปต์รับชื่อไฟล์จากรายการ sys.argv ปัญหาของฉันคือฉันไม่สามารถเรียกใช้สคริปต์ด้วยอาร์กิวเมนต์ใน pycharm

ฉันได้พยายามป้อนอาร์กิวเมนต์ในช่อง "พารามิเตอร์สคริปต์" ใน "เรียกใช้"> เมนู "แก้ไขการกำหนดค่า" ดังนี้:

-s'file1.txt', -s'file2.txt'

แต่มันไม่ได้ผล ฉันจะเปิดสคริปต์ด้วยอาร์กิวเมนต์ได้อย่างไร

ปล. ฉันใช้ Ubuntu

คำตอบ:


112

ใน PyCharm พารามิเตอร์ที่มีการเพิ่มในScript Parametersขณะที่คุณไม่ได้ แต่พวกเขาจะถูกล้อมรอบในราคาคู่ และไม่มีการระบุธงล่ามเช่น"" -sแฟล็กเหล่านั้นระบุไว้ในInterpreter optionsกล่อง

เนื้อหาในกล่องพารามิเตอร์สคริปต์:

"file1.txt" "file2.txt"

ธงล่าม:

-s

หรือด้วยสายตา:

ป้อนคำอธิบายภาพที่นี่

จากนั้นด้วยไฟล์ทดสอบอย่างง่ายเพื่อประเมิน:

if __name__ == "__main__":
    import sys
    print(sys.argv)

เราได้รับพารามิเตอร์ที่เราให้ไว้ (โดยsys.argv[0]ถือชื่อสคริปต์แน่นอน):

['/Path/to/current/folder/test.py', 'file1.txt', 'file2.txt']

ขอบคุณที่ใช้งานได้ นอกจากนี้ปรากฎว่าฉันควรใช้เครื่องหมายคำพูด "" แทน ""
YKY

3
สิ่งนี้มีประโยชน์ แต่เพื่อความชัดเจนสคริปต์ python ของฉันใช้ชื่อไฟล์สองชื่อเป็นพารามิเตอร์หนึ่งสำหรับ -r และหนึ่งสำหรับ -s (หรือทั้งสองหรือหนึ่งหรือทั้งสอง) ดังนั้นพารามิเตอร์สคริปต์ของฉันจึงถูกระบุเป็น [-p "prof_samples.txt" -r "resp_samples.txt"] โดยไม่มีตัวเลือกล่าม
harry

2
ฉันคิดว่าคำตอบนี้ล้าสมัยเพราะไม่มีscript parameters
tisaconundrum

@tisaconundrum หลังจากตรวจสอบสิ่งนี้คุณช่วยบอกได้ไหมว่าคุณใช้ PyCharm เวอร์ชันใดอยู่ ฉันเพิ่งดาวน์โหลดเวอร์ชันล่าสุด (PyCharm Community Edition 2017.2.3 Build # PC-172.3968.37 สร้างเมื่อวันที่ 1 กันยายน 2017) และยังคงเห็นScript parametersตัวเลือก
Dimitris Fasarakis Hilliard

หลังจากเพิ่มค่าพารามิเตอร์การคลิกปุ่ม APPLY หรือ OK จะไม่เรียกใช้รหัส หากฉันบันทึกการกำหนดค่าและเรียกใช้รหัสข้อโต้แย้งที่ยังไม่ได้รับการพิจารณาในรหัส Pycharm python
Praveen L

78

เพื่อประโยชน์ของผู้อื่นที่สงสัยว่าจะไปที่หน้าต่างนี้ได้อย่างไร วิธีการมีดังนี้

คุณสามารถเข้าถึงได้โดยคลิกที่Select Run/Debug Configurations(ทางด้านซ้ายของป้อนคำอธิบายภาพที่นี่) และไปที่ไฟล์Edit Configurations. GIF ให้เพื่อความชัดเจน

ป้อนคำอธิบายภาพที่นี่


1
คลิปสั้น ๆ มีประโยชน์จริง ๆ - ขอบคุณ! นั่นคือสิ่งที่ฉันเกลียดเกี่ยวกับกุย มันเหมือนกับการล่าไข่อีสเตอร์ในขณะที่บรรทัดคำสั่งคุณเพียงแค่พิมพ์เข้าไป
Shanemeister

สิ่งนี้มีประโยชน์มากกว่าการโหวตที่ดีที่สุด ขอบคุณ!
Aakash Basu

13

ใน PyCharm Community หรือ Professional Edition 2019.1+ :

  1. จากแถบเมนูคลิกRun -> Edit Configurations
  2. เพิ่มอาร์กิวเมนต์ของคุณในกล่องข้อความพารามิเตอร์ (ตัวอย่างเช่นfile2.txt file3.txtหรือ--myFlag myArg --anotherFlag mySecondArg)
  3. คลิกใช้
  4. คลิกตกลง

11

นอกเหนือจากคำตอบของ Jim (ขออภัยมีจุดตัวแทนไม่เพียงพอที่จะแสดงความคิดเห็น) เพียงแค่ต้องการชี้ให้เห็นว่าอาร์กิวเมนต์ที่ระบุใน PyCharm ไม่มีอักขระพิเศษหลบหนีซึ่งแตกต่างจากสิ่งที่คุณทำในบรรทัดคำสั่ง ดังนั้นในขณะที่บรรทัดคำสั่งคุณจะต้องทำ:

python mediadb.py  /media/paul/New\ Volume/Users/paul/Documents/spinmaster/\*.png

พารามิเตอร์ PyCharm จะเป็น:

"/media/paul/New Volume/Users/paul/Documents/spinmaster/*.png"

5

โปรดสังเกตว่าด้วยเหตุผลที่ไม่ทราบสาเหตุจึงไม่สามารถเพิ่มอาร์กิวเมนต์บรรทัดคำสั่งในเวอร์ชัน PyCharm Edu ได้ สามารถทำได้ในรุ่น Professional และ Community เท่านั้น


3

พารามิเตอร์แรกคือชื่อของสคริปต์ที่คุณต้องการเรียกใช้ จากพารามิเตอร์ที่สองเป็นต้นไปเป็นพารามิเตอร์ที่คุณต้องการส่งผ่านจากบรรทัดคำสั่งของคุณ ด้านล่างนี้เป็นสคริปต์ทดสอบ:

from sys import argv

script, first, second = argv
print "Script is ",script
print "first is ",first
print "second is ",second

และนี่คือวิธีที่คุณส่งผ่านพารามิเตอร์อินพุต: 'Path to your script', 'First Parameter', 'Second Parameter'

สมมติว่า Path ไปยังสคริปต์ของคุณคือ /home/my_folder/test.py ผลลัพธ์จะเป็นดังนี้:

Script is /home/my_folder/test.py
first is First Parameter
second is Second Parameter

หวังว่านี่จะช่วยได้เพราะฉันต้องใช้เวลาพอสมควรในการคิดว่าพารามิเตอร์อินพุตถูกคั่นด้วยจุลภาค


2

เพิ่มสิ่งต่อไปนี้ที่ด้านบนของไฟล์ Python ของคุณ

import sys

sys.argv = [
    __file__,
    'arg1',
    'arg2'
]

ตอนนี้คุณสามารถคลิกขวาที่สคริปต์ Python


1

ฉันเชื่อว่ามันรวมอยู่ในเวอร์ชัน Edu เพียงคลิกขวาที่ปุ่มลูกศรทึบสีเขียว (เรียกใช้) แล้วเลือก "เพิ่มพารามิเตอร์"


1

มันใช้งานได้ในเวอร์ชัน edu สำหรับฉัน ฉันไม่จำเป็นต้องระบุอ็อพชัน a -s ในอ็อพชันล่าม

พารามิเตอร์ Pycharm สำหรับการรันด้วยบรรทัดคำสั่ง

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