Как я могу использовать позиционный аргумент с пробелом в Pythonbrew? - PullRequest
1 голос
/ 27 июня 2011

Я с большим успехом использую модуль argparse для приема ввода в программу.Я определил около шести необязательных аргументов (аргументы, которые должны быть добавлены с - могут быть помещены в любое место в списке) и один позиционный аргумент (обязательные аргументы, которые используют порядок, определяемый для аргумента), поэтому моя диаграмма использования выглядит следующим образомэто (с дополнительными необязательными аргументами, удаленными для краткости):

usage: Main.py [-h] [--site SITE] [--username USERNAME] [--password PASSWORD]
           [--verbose]
           filepath

Чтобы запустить скрипт Python 2.7 на Debian (поставляется с Python 2.6), я успешно использовал pythonbrew, который допускает несколько установок Pythonсосуществовать на одном сервере.Хороший побочный эффект от его использования означает, что я могу отключить исполняемые разрешения для моего скрипта, что значительно упрощает мне управление пользователями.

Все было хорошо, пока я не попытался сохранить в filepath (мой одинокий позиционныйаргумент), в котором был пробел, и я обнаружил, что не могу!

pythonbrew py Main.py --verbose /media/rackspace/db1/clients/My\ Client/
pythonbrew py Main.py --verbose '/media/rackspace/db1/clients/My\ Client/'
pythonbrew py Main.py --verbose "/media/rackspace/db1/clients/My\ Client/"
pythonbrew py Main.py --verbose [/media/rackspace/db1/clients/My\ Client/]

pythonbrew py Main.py --verbose /media/rackspace/db1/clients/My Client/
pythonbrew py Main.py --verbose '/media/rackspace/db1/clients/My Client/'
pythonbrew py Main.py --verbose "/media/rackspace/db1/clients/My Client/"
pythonbrew py Main.py --verbose [/media/rackspace/db1/clients/My Client/]

все возвращают одно и то же сообщение об ошибке

Main.py: error: unrecognized arguments: Client

Может кто-нибудь подтвердить эту ошибку?Тот факт, что никто еще не упомянул об этом в группах Python, заставляет меня поверить, что это ошибка Pythonbrew, но я надеюсь сохранить Pythonbrew и найти альтернативный способ запуска этого скрипта.Сейчас я просто храню файлы в папке без пробелов, но надеюсь, что кто-то может помочь с этой ошибкой.

Ответы [ 2 ]

2 голосов
/ 27 июня 2011

Проблема в pythonbrew/commands/py.py.Каждый вызов subprocess.Popen() необходимо изменить, чтобы он использовал список для команды вместо строки.

1 голос
/ 27 июня 2011

Я не могу оставить комментарий, так как я слишком новый, но вы пытались покинуть пространство, поставив \ перед ним? Может быть что-то вроде:

pythonbrew py Main.py --verbose /media/rackspace/db1/clients/My\ Client/

...