12

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

这是一个例子

test.py D:/test/File Name

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

4

4 回答 4

15

您传递用引号括起来的文件夹名称:

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

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

如果由于某种原因不能引用文件夹名称,则需要使用ctypes模块并使用 Win32 API 的GetCommandLine功能。这是一个功能示例

于 2013-12-26T12:45:16.527 回答
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。理论上它应该这样做。

于 2015-02-25T08:38:47.597 回答
0

将空格作为参数传递的惯例是转义空格。

test.py D:/test/File\ Name

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

于 2013-12-26T12:41:25.300 回答
-1

编辑!!:
根据您的命令行的编码器,
空格的 ascii 编码参考通常是 %20
所以不要使用空格,而是使用 %20
https://www.w3schools.com/tags/ref_urlencode.ASP

如下

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

一定要按原样写

如果这对您有帮助,请投票支持。我第一次写它时并不正确,但现在我相信应该这样做。

于 2020-10-13T20:33:44.520 回答