如何在Pythonbrew中使用带空格的位参数?
我一直在使用argparse模块来接受程序的输入,效果很好。我定义了大约六个可选参数(这些参数前面需要加上--,可以随意放在列表中)和一个位置参数(这是必须的参数,按照放置的顺序来确定),所以我的使用情况大致如下(为了简洁,省略了一些可选参数):
usage: Main.py [-h] [--site SITE] [--username USERNAME] [--password PASSWORD]
[--verbose]
filepath
为了在Debian上运行Python 2.7脚本(Debian自带的是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的一个bug,但我希望能继续使用pythonbrew,并找到其他方法来运行这个脚本。目前,我只是把文件存储到一个没有空格的文件夹里,但我希望有人能帮我解决这个错误。
2 个回答
1
我还太新,不能发评论,但你有没有试过在空格前面加个反斜杠(\)来处理空格呢?也许可以这样写:
pythonbrew py Main.py --verbose /media/rackspace/db1/clients/My\ Client/
2
问题出在 pythonbrew/commands/py.py
这个文件里。每次调用 subprocess.Popen()
的时候,都需要把命令从字符串改成列表的形式。