2015-10-13 22 views
34

Tôi đang cố gắng gỡ lỗi một tập lệnh lấy đối số dòng lệnh làm đầu vào. Đối số là các tệp văn bản trong cùng một thư mục. Tập lệnh lấy tên tệp từ danh sách sys.argv. Vấn đề của tôi là tôi không thể khởi chạy kịch bản với các đối số trong pycharm.Đối số Pycharm và sys.argv

Tôi đã cố gắng để vào lập luận thành "thông số Script" lĩnh vực trong "Run"> "Chỉnh sửa cấu hình" menu như vậy:

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

Nhưng nó đã không làm việc. Làm cách nào để khởi chạy tập lệnh của tôi với các đối số?

P.S. Tôi đang trên Ubuntu

Trả lời

42

Trong PyCharm các thông số được thêm vào trong Script Parameters như bạn đã làm nhưng, họ được đóng mở bằng dấu ngoặc kép"" và không có quy định cụ thể cờ Interpreter như -s. Những cờ đó được chỉ định trong hộp Interpreter options.

Script Các thông số nội dung hộp:

"file1.txt" "file2.txt" 

Interpeter cờ:

-s 

Hoặc, trực quan:

enter image description here

Sau đó, với một tập tin thử nghiệm đơn giản để đánh giá:

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

Chúng tôi nhận được các thông số chúng tôi cung cấp (với sys.argv[0] giữ tên kịch bản tất nhiên):

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

Cảm ơn nó đã hoạt động. Ngoài ra nó chỉ ra rằng tôi nên sử dụng "" dấu ngoặc kép thay vì ''. – YKY

+0

Có, xấu của tôi, hãy để tôi chỉ rõ rằng trong câu trả lời cho sự hoàn chỉnh hơn nữa. –

+2

Điều này hữu ích; nhưng để làm rõ, kịch bản python của tôi có hai tên tập tin như các tham số, một cho -r và một cho -s (hoặc cả hai hoặc một hoặc không). Vì vậy, thông số tập lệnh của tôi được chỉ định là [-p "prof_samples.txt" -r "resp_samples.txt"] không có tùy chọn thông dịch viên. – hangzhouharry

7

Ngoài câu trả lời của Jim (xin lỗi không đủ điểm đại diện để thực hiện một bình luận), chỉ muốn chỉ các đối số được chỉ định trong PyCharm do không có các ký tự đặc biệt được thoát, không giống như những gì bạn sẽ làm trên dòng lệnh. Vì vậy, trong khi đó trên dòng lệnh bạn muốn làm:

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

tham số PyCharm sẽ là:

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

Vì lợi ích của những người đang tự hỏi làm thế nào để có được cửa sổ này. Dưới đây là cách thực hiện:

Bạn có thể truy cập điều này bằng cách nhấp vào Select Run/Debug Configurations (ở bên trái của enter image description here) và chuyển đến Edit Configurations. A gif được cung cấp để làm rõ.

enter image description here

2

Tham số đầu tiên là tên của tập lệnh bạn muốn chạy. Từ tham số thứ hai trở đi, nó là các tham số mà bạn muốn truyền từ dòng lệnh của bạn.Dưới đây là một kịch bản thử nghiệm:

from sys import argv 

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

Và đây là cách bạn vượt qua các thông số đầu vào: 'Đường dẫn đến kịch bản của bạn', 'Đầu Parameter', 'Thứ hai Parameter'

Hãy nói rằng con đường đến tập lệnh của bạn là /home/my_folder/test.py, đầu ra sẽ như sau:

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

Hy vọng điều này sẽ giúp tôi đôi khi tìm ra thông số đầu vào được phân tách bằng dấu phẩy.

1

Lưu ý rằng vì một số lý do không xác định, bạn không thể thêm đối số dòng lệnh trong phiên bản PyCharm Edu. Nó chỉ có thể được thực hiện trong các ấn bản Chuyên nghiệp và Cộng đồng.