Argumentos Pycharm e sys.argv

93

Estou tentando depurar um script que usa argumentos de linha de comando como entrada. Os argumentos são arquivos de texto no mesmo diretório. O script obtém os nomes dos arquivos da lista sys.argv. Meu problema é que não consigo iniciar o script com argumentos em pycharm.

Tentei inserir argumentos no campo "Parâmetros do script" no menu "Executar"> "Editar configuração" da seguinte forma:

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

Mas não funcionou. Como eu inicio meu script com argumentos?

PS estou no Ubuntu

YKY
fonte

Respostas:

112

No PyCharm, os parâmetros são adicionados ao Script Parameterscomo você fez, mas são colocados entre aspas duplas "" e sem especificar os sinalizadores de intérprete como -s. Esses sinalizadores são especificados na Interpreter optionscaixa.

Conteúdo da caixa de parâmetros de script:

"file1.txt" "file2.txt"

Sinalizadores de intérprete:

-s

Ou, visualmente:

insira a descrição da imagem aqui

Então, com um arquivo de teste simples para avaliar:

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

Obtemos os parâmetros que fornecemos ( sys.argv[0]mantendo o nome do script, é claro):

['/Path/to/current/folder/test.py', 'file1.txt', 'file2.txt']
Dimitris Fasarakis Hilliard
fonte
Obrigado, funcionou. Além disso, eu deveria ter usado aspas "" em vez de ''.
YKY
3
Isso foi útil; mas para esclarecer, meu script python leva dois nomes de arquivo como parâmetros, um para -r e outro para -s (ou ambos ou um ou nenhum). Portanto, meus parâmetros de script foram especificados como [-p "prof_samples.txt" -r "resp_samples.txt"] sem opções de intérprete.
harry
2
Acho que esta resposta está desatualizada porque não háscript parameters
tisaconundrum
@tisaconundrum depois de verificar isso, você poderia me dizer qual versão do PyCharm você está executando? Acabei de baixar o mais recente (PyCharm Community Edition 2017.2.3 Build # PC-172.3968.37, construído em 1 de setembro de 2017) e ainda vejo a Script parametersopção.
Dimitris Fasarakis Hilliard
Após adicionar os valores dos parâmetros, clicar no botão APLICAR ou OK e não executar o código. Se eu salvar as configurações e executar o código, ainda argumentos não considerados no código Pycharm python
Praveen L
78

Para o bem de outras pessoas que estão se perguntando como chegar a esta janela. Veja como:

Você pode acessá-lo clicando em Select Run/Debug Configurations(à esquerda de insira a descrição da imagem aqui) e indo para o Edit Configurations. Um gif fornecido para maior clareza.

insira a descrição da imagem aqui

tisaconundrum
fonte
1
O clipe curto foi realmente útil - obrigado! Isso é o que eu odeio nas coisas gui. É como uma caça ao ovo de Páscoa, enquanto na linha de comando você simplesmente digita.
Shanemeister
Isso foi mais útil do que o melhor voto favorável. Obrigado!
Aakash Basu
13

No PyCharm Community ou Professional Edition 2019.1+ :

  1. Na barra de menu, clique em Executar -> Editar Configurações
  2. Adicione seus argumentos na caixa de texto Parâmetros (por exemplo file2.txt file3.txt, ou --myFlag myArg --anotherFlag mySecondArg)
  3. Clique em Aplicar
  4. Clique OK
Giorgos Myrianthous
fonte
11

Além da resposta de Jim (desculpe, não há pontos de representação suficientes para fazer um comentário), só queria apontar que os argumentos especificados no PyCharm não têm caracteres especiais de escape, ao contrário do que você faria na linha de comando. Portanto, enquanto na linha de comando você faria:

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

o parâmetro PyCharm seria:

"/media/paul/New Volume/Users/paul/Documents/spinmaster/*.png"
Paul Miller
fonte
5

Observe que por alguma razão desconhecida, não é possível adicionar argumentos de linha de comando na versão PyCharm Edu. Isso só pode ser feito nas edições Professional e Community.

Jan Bodnar
fonte
3

O primeiro parâmetro é o nome do script que você deseja executar. Do segundo parâmetro em diante, são os parâmetros que você deseja passar da linha de comando. Abaixo está um script de teste:

from sys import argv

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

E aqui está como você passa os parâmetros de entrada: 'Caminho para seu script', 'Primeiro parâmetro', 'Segundo parâmetro'

Digamos que o caminho para o seu script seja /home/my_folder/test.py, a saída será como:

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

Espero que isso ajude, pois levei algum tempo para descobrir que os parâmetros de entrada são separados por vírgulas.

Rumela Saraswati
fonte
2

Adicione o seguinte ao topo do seu arquivo Python.

import sys

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

Agora, você pode simplesmente clicar com o botão direito no script Python.

Ahmed
fonte
1

Acredito que esteja incluso até na versão Edu. Apenas clique com o botão direito no botão de seta verde sólido (Executar) e escolha "Adicionar parâmetros".

Py Learner
fonte
1

Funciona na versão edu para mim. Não foi necessário especificar uma opção -s nas opções do interpretador.

Parâmetros do Pycharm para execução com linha de comando

Awaa
fonte