2010-01-27 4 views
2

Je ne sais pas si c'est un problème avec python ou avec le shell (zsh sur linux), j'ai un argument comme ceci: "@xyz" qui commence par un "@"Escape @ de la commande de ligne python

python the_script.py first_argument @second_argument third_arg

J'ai essayé d'échapper @ avec \ ou \\, ou utiliser "" mais le programme ne démarre pas. Si je laisse le @ de @second_arguments tout va bien.

+0

Fonctionne bien dans bash. Êtes-vous sûr que ce n'est pas seulement un problème avec le script lui-même? –

+0

J'ai zsh 4.3.10, et ça fonctionne bien. – ghostdog74

+0

"Ne démarre pas?" Qu'est-ce que ça veut dire? –

Répondre

2
  1. Peut-être le "@" est un caractère glob dans zsh, expanding to all symbolic links in the current directory. Essayez de vous échapper avec "@@"?

  2. Essayez d'exécuter la liste d'arguments avec echo, à savoir:

    écho the_script.py first_argument @second_argument third_arg

De cette façon, vous pouvez savoir si elle a été élargie ou passée en-est au script.

+0

ok, merci, le test d'écho fonctionne aussi pour moi. Je pense que le problème est que je passe le @something à os.system –

+3

Utilisez subprocess.Popen() au lieu de os.system. –

+0

@Thomas +1 toujours un bon conseil. –

Questions connexes