【发布时间】:2015-11-18 21:48:39
【问题描述】:
我写了一个python脚本,需要2个命令行参数,第二个参数中有一些'&'s。我在&'附近收到错误zsh parse error,所以我尝试引用并双引号这2个参数,但结果出错了。代码简化如下:
import base64, hmac, urllib, sys
from hashlib import sha256
def signature(secret_access_key, string_to_sign):
h = hmac.new(secret_access_key, digestmod=sha256)
h.update(string_to_sign)
sign = base64.b64encode(h.digest()).strip()
return urllib.quote_plus(sign)
if __name__ == '__main__':
secret_access_key = 'a'
string_to_sign = 'b\nc\nd&e&f'
print signature(secret_access_key, string_to_sign)
print signature(sys.argv[1], sys.argv[2])
print sys.argv[2] == string_to_sign
以下是pycharm中的配置print sys.argv[2] == string_to_sign返回False和signature(secret_access_key, string_to_sign) 的结果是我所期望的,但是我需要在命令行中传递这两个参数。
那么有什么办法可以在命令行中转义'&' 和'\n' 吗?
【问题讨论】:
标签: python python-2.7 escaping command-line-interface