如何在Pythonbrew中使用带有空格的位置参数?

时间:2011-06-27 16:06:10

标签: python arguments argparse

我一直在使用argparse模块接受程序输入,取得了很大的成功。我已经定义了六个可选参数(需要添加的参数 - 可以放在列表中的任何位置)和一个位置参数(使用放置的顺序来确定参数的必需参数),所以我的使用图表看起来像这个(为简洁起见删除了额外的可选参数):

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

为了在Debian上运行Python 2.7脚本(随Python 2.6一起提供),我使用pythonbrew取得了成功,它允许多个Python安装在同一台服务器上共存。使用它的一个很好的副作用意味着我可以关闭我的脚本的可执行权限,这使我的用户管理更容易。

一切都很好,直到我试图存储到一个文件路径(我唯一的位置参数)中有一个空格,我发现我不能!

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 个答案:

答案 0 :(得分:2)

问题出在pythonbrew/commands/py.py。需要修改对subprocess.Popen()的每次调用,以便它使用命令列表而不是字符串。

答案 1 :(得分:1)

我不能发表评论,因为我太新了,但是你试图逃避这个空间,在它前面放一个\吗?也许是这样的:

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