【发布时间】:2014-05-22 14:38:11
【问题描述】:
我有一个 python 2.7 脚本通过 sys.argv[1:] 读取输入参数。为了不分解输入参数,必须在其周围加上引号(否则 sys.argv 将在任何有空格的地方分解输入参数)。如何确保它周围有引号?
示例:
python example.py -copyDir --dir:"C:\Users\heinst\Documents\heinsts music"
有没有办法检查--dir: 参数是否有引号?否则 sys.argv 列表会将其分成两部分:C:\Users\heinst\Documents\heinsts 和 music
【问题讨论】:
-
请记住,没有空格你不需要引号,并且在 Linux 上而不是引用路径是正常的,以逃避空格,例如
--dir=~/My\ Music -
您是否要确保参数格式正确?正如@SteveBarnes 所提到的,仅检查参数是否包含引号并不能涵盖所有情况。
-
您的整个 --dir 参数将被 CMD 和 Python 视为带有嵌入空格的单个参数。用一个小脚本测试它:
echo {%1} {%2} {%3} -
@icedtrees 我只是想确保如果输入参数中有空格并且如果有空格,则路径不会因此而混乱。现在发生的情况是脚本找不到路径,如果它周围没有引号,因为 C:\Users\heinst\Documents\heinsts 不存在,但 C:\Users\heinst\Documents\heinsts music 存在跨度>
-
@heinst 无法检查引号外是否有空格,甚至无法检查引号外有多少空格。请参阅stackoverflow.com/questions/667540/… - 当 args 到达您的 python 程序时已经太晚了。你最好的选择是遵循 tutuDajuju 的方法,当 args 不正确时会产生一个很好的错误退出消息,或者你可以做一些 hacky 手动处理,假设只有一个空格,然后 " ".join 有问题的 args。跨度>
标签: python python-2.7