Аргументы pycharm и sys.argv

89

Я пытаюсь отладить сценарий, который принимает аргументы командной строки в качестве входных данных. Аргументы - это текстовые файлы в одном каталоге. Скрипт получает имена файлов из списка sys.argv. Моя проблема в том, что я не могу запустить скрипт с аргументами в pycharm.

Я попытался ввести аргументы в поле «Параметры сценария» в меню «Выполнить»> «Изменить конфигурацию» следующим образом:

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

Но не вышло. Как запустить скрипт с аргументами?

PS Я на Ubuntu

YKY
источник

Ответы:

107

В 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"] без параметров интерпретатора.
Гарри
2
Я думаю, что этот ответ устарел, потому что нетscript parameters
tisaconundrum
@tisaconundrum, проверив это, не могли бы вы сказать мне, какую версию PyCharm вы используете? Я только что загрузил последнюю версию (PyCharm Community Edition 2017.2.3 Build # PC-172.3968.37, созданный 1 сентября 2017 г.) и все еще вижу этот Script parametersвариант.
Димитрис Фасаракис Хиллиард
После добавления значений параметров нажатие кнопки ПРИМЕНИТЬ или ОК не запускает код. Если я сохраню конфигурации и запущу код, аргументы все равно не будут учтены в коде Python Pycharm
Правин Л.
75

Ради других, кто задается вопросом, как добраться до этого окна. Вот как:

Вы можете получить к нему доступ, нажав Select Run/Debug Configurations(слева от введите описание изображения здесь) и перейдя в Edit Configurations. Для наглядности предоставлена ​​гифка.

введите описание изображения здесь

tisaconundrum
источник
1
Короткий клип оказался действительно полезным - спасибо! Это то, что я ненавижу в графических элементах. Это похоже на охоту за пасхальными яйцами, в то время как в командной строке вы просто вводите его.
Шанемейстер
Это было более полезно, чем лучший, получивший наибольшее количество голосов. Благодарность!
Аакаш Басу,
12

В сообществе PyCharm или Professional Edition 2019.1+ :

  1. В строке меню нажмите « Выполнить» -> « Изменить конфигурации».
  2. Добавьте свои аргументы в текстовое поле Параметры (например file2.txt file3.txt, или --myFlag myArg --anotherFlag mySecondArg)
  3. Нажмите Применить
  4. Нажмите ОК
Giorgos Myrianthous
источник
11

В дополнение к ответу Джима (извините, недостаточно очков репутации, чтобы сделать комментарий), просто хотел указать, что аргументы, указанные в 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

А вот как вы передаете входные параметры: «Путь к вашему скрипту», «Первый параметр», «Второй параметр».

Допустим, путь к вашему скрипту - /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. Просто щелкните правой кнопкой мыши кнопку со сплошной зеленой стрелкой (Выполнить) и выберите «Добавить параметры».

Py Learner
источник
1

У меня он работает в версии edu. Мне не нужно было указывать параметр -s в параметрах интерпретатора.

Параметры Pycharm для работы с командной строкой

Аваа
источник