1

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

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

为了在 Debian(Python 2.6 附带)上运行 Python 2.7 脚本,我使用 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 并找到运行此脚本的替代方法。现在,我只是将文件存储到一个没有空格的文件夹中,但我希望有人可以帮助解决这个错误。

4

2 回答 2

2

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

于 2011-06-27T16:20:18.163 回答
1

由于我太新了,所以我无法发表评论,但是您是否尝试通过在其前面放置一个 \ 来逃避该空间?也许是这样的:

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

于 2011-06-27T16:13:13.190 回答