Đối số Pycharm và sys.argv


89

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. Script 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 tập lệnh với các đối số trong pycharm.

Tôi đã cố gắng nhập đối số vào trường "Tham số tập lệnh" trong trình đơn "Chạy"> "Chỉnh sửa cấu hình" như sau:

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

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

PS Tôi đang sử dụng Ubuntu

Câu trả lời:


107

Trong PyCharm, các tham số được thêm vào Script Parametersnhư bạn đã làm nhưng chúng được đặt trong dấu ngoặc kép "" và không chỉ định các cờ Trình thông dịch như thế nào -s. Các cờ đó được chỉ định trong Interpreter optionshộp.

Nội dung hộp Tham số Tập lệnh:

"file1.txt" "file2.txt"

Cờ interpeter:

-s

Hoặc, trực quan:

nhập mô tả hình ảnh ở đây

Sau đó, với một tệp 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 tham số mà chúng tôi đã cung cấp ( sys.argv[0]tất nhiên là giữ tên tập lệnh):

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

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

3
Điều này rất hữu ích; nhưng để làm rõ, tập lệnh python của tôi lấy hai tên tệp làm 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, các tham số tập lệnh của tôi đã được chỉ định là [-p "prof_samples.txt" -r "resp_samples.txt"] mà không có tùy chọn trình thông dịch.
harry

2
Tôi nghĩ rằng câu trả lời này là lỗi thời vì không cóscript parameters
tisaconundrum

@tisaconundrum sau khi kiểm tra điều này, bạn có thể cho tôi biết bạn đang chạy phiên bản PyCharm nào không? Tôi vừa tải xuống phiên bản mới nhất (PyCharm Community Edition 2017.2.3 Build # PC-172.3968.37, được xây dựng vào ngày 1 tháng 9 năm 2017) và vẫn thấy Script parameterstùy chọn.
Dimitris Fasarakis Hilliard, 19/09/17

Sau khi thêm các giá trị tham số, nhấp vào ÁP DỤNG hoặc OK nút không chạy mã. Nếu tôi lưu cấu hình và chạy mã, vẫn tranh cãi không được coi là trong mã python Pycharm
Praveen L

75

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

Bạn có thể truy cập vào phần này bằng cách nhấp vào Select Run/Debug Configurations(ở bên trái của nhập mô tả hình ảnh ở đây) và đi tới Edit Configurations. Một gif được cung cấp để rõ ràng.

nhập mô tả hình ảnh ở đây


1
Đoạn clip ngắn thực sự hữu ích - xin cảm ơn! Đó là những gì tôi ghét về những thứ gui. Nó giống như một cuộc săn trứng Phục sinh trong khi dòng lệnh bạn chỉ cần nhập nó vào.
Shanemeister

Cái này hữu ích hơn cái tốt nhất được ủng hộ tốt nhất. Cảm ơn!
Aakash Basu

12

Trên Cộng đồng PyCharm hoặc Phiên bản Chuyên nghiệp 2019.1+ :

  1. Từ thanh menu, nhấp vào Chạy -> Chỉnh sửa cấu hình
  2. Thêm đối số của bạn trong hộp văn bản Tham số (ví dụ: file2.txt file3.txthoặc --myFlag myArg --anotherFlag mySecondArg)
  3. Nhấp vào Áp dụng
  4. Bấm OK

11

Ngoài câu trả lời của Jim (xin lỗi không đủ điểm đại diện để đưa ra nhận xét), chỉ muốn chỉ ra rằng các đối số được chỉ định trong PyCharm không có ký tự đặc biệt thoát ra, 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 sẽ thực hiện:

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"

5

Lưu ý rằng vì một số lý do không xác định, 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 phiên bản Chuyên nghiệp và Cộng đồng.


3

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, đó là các tham số mà bạn muốn chuyển từ dòng lệnh của mình. 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 chuyển các tham số đầu vào: 'Đường dẫn đến tập lệnh của bạn', 'Tham số đầu tiên', 'Tham số thứ hai'

Giả sử rằng Đường dẫn đến tập lệnh của bạn là /home/my_folder/test.py, kết quả đầ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 ích vì tôi đã mất một lúc để tìm ra các thông số đầu vào được phân tách bằng dấu phẩy.


2

Thêm phần sau vào đầu tệp Python của bạn.

import sys

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

Bây giờ, bạn chỉ cần nhấp chuột phải vào tập lệnh Python.


1

Tôi tin rằng nó được bao gồm ngay cả trong phiên bản Edu. Chỉ cần nhấp chuột phải vào nút mũi tên màu xanh lục đặc (Chạy) và chọn "Thêm thông số".


1

Nó hoạt động trong phiên bản edu cho tôi. Tôi không cần thiết phải chỉ định tùy chọn a -s trong các tùy chọn thông dịch viên.

Các tham số Pycharm để chạy với dòng lệnh

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.