解析python中有空格的命令行参数

时间:2013-12-26 12:37:43

标签: python jython wlst

我正在调用ant的脚本。我从调用者那里得到它作为单个字符串,但python奇怪地把它当作两个单独的字符串。我有脚本在Windows中用它的路径读取文件名。文件夹结构可能有也可能没有空格

这是一个例子

test.py D:/test/File Name

我知道这可以使用optparse来完成。有什么方法可以把参数作为单一参数阅读 就像我想在sys.argv [index]中获取它(作为单个字符串)。我已经厌倦了用'和'加上前缀但没有成功。

4 个答案:

答案 0 :(得分:13)

您传递包含在引号中的文件夹名称:

test.py "D:\test\File Name"

sys.argv[1]将包含文件夹路径,包含空格。

如果由于某种原因无法引用文件夹名称,则需要使用ctypes模块并使用Win32 API的GetCommandLine函数。这是一个functional example

答案 1 :(得分:1)

将空格作为参数传递的约定是通过转义空格。

test.py D:/test/File\ Name

这样您就可以在python脚本中访问“D:/ test / File Name”。

答案 2 :(得分:1)

根据MS: https://msdn.microsoft.com/en-us/library/windows/desktop/17w5ykft(v=vs.85).aspx

反斜杠按字面解释,除非它们紧跟在双引号之前。

如果Windows上的Python使用此方法,我会感到沮丧: https://msdn.microsoft.com/en-us/library/windows/desktop/bb776391(v=vs.85).aspx

解析命令行以创建sys.argv。 理论上它应该这样做。

答案 3 :(得分:-1)

改为尝试

test.py file:///D:/test/File%20Name

请务必照原样写