我试图调用如下的Python脚本,我已经导入了所有需要的库我有命令变量如下和函数如下
def Start_Job(command):
global job_start_date
print("\n----------------- Run Command -----------------\n" + command)
job_start_date = datetime.now()
print("\n job_start_date = " + str(job_start_date) + "\n")
try:
os.system(command)
print("\n-------- Wait for 100 seconds ---------------------")
time.sleep(100)
except Exception as e:
print("Error in Start_Job [" , str(e) , "]")
command = 'curl --insecure -u admin:G^H&j8k9G^H&j8k9 "https://expert_solution.net.plm.eds.com/job/Amar/job/WaitingTest/buildWithParameters?token=simdevops&Machine_Name=iltlvinteg6"'
Start_Job(command)
当我调用Start_Job()
函数时,由于密码中的&将密码分为两部分,第一部分是j8k9G^H,第二部分是j8k9,所以密码不能以正确的方式分配,否则^在命令中处理得不好。请任何人都可以给予适当的解决办法或分享提示这个问题
首先,我尝试了urllib.parse.quote(pass_word)
,这是行不通的。我也尝试了其他技术,但没有成功。
1条答案
按热度按时间uurity8g1#
应该使用百分比编码对这些特殊字符进行编码。
在Python中,在构造URL之前,必须使用urllib.parse.quote函数对用户名和密码进行正确编码。如果它不为您工作,它将不会正确地完成您需要的功能。
我对代码的修改是:首先,我使用urllib.parse.quote对用户名和密码进行编码,并将safe参数设置为空字符串,以确保所有特殊字符都被正确编码。接下来,我用编码的凭证构造URL,os.system调用将此URL用于命令。
如果您有任何进一步的问题或疑问,请让我知道。