我一直在使用argparse模块接受程序的输入,并取得了很大的成功。我定义了大约六个可选参数(需要以-为前缀的参数,可以放在列表中的任何位置)和一个位置参数(使用放置顺序来确定参数的必需参数),因此我的使用情况图如下所示(为简洁起见,删除了额外的可选参数):
usage: Main.py [-h] [--site SITE] [--username USERNAME] [--password PASSWORD]
[--verbose]
filepath为了在Debian (随Python2.6一起提供)上运行Python2.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,并找到一种替代方法来运行这个脚本。现在,我只是简单地将文件存储到一个没有空格的文件夹中,但我希望有人能帮助解决这个错误。
发布于 2011-06-28 00:20:18
问题出在pythonbrew/commands/py.py上。每次对subprocess.Popen()的调用都需要修改,以便它使用命令的列表而不是字符串。
发布于 2011-06-28 00:13:13
我不能发表评论,因为我太新了,但你有没有试图通过在空间前面放一个\来逃离它?可能是这样的:
pythonbrew py Main.py --verbose /media/rackspace/db1/clients/My\ Client/
https://stackoverflow.com/questions/6495673
复制相似问题