我正在调用ant的脚本。我从调用者那里得到它作为单个字符串,但python奇怪地把它当作两个单独的字符串。我有脚本在Windows中用它的路径读取文件名。文件夹结构可能有也可能没有空格
这是一个例子
test.py D:/test/File Name
我知道这可以使用optparse来完成。有什么方法可以把参数作为单一参数阅读 就像我想在sys.argv [index]中获取它(作为单个字符串)。我已经厌倦了用'和'加上前缀但没有成功。
答案 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
请务必照原样写