[python]python-jenkins报错TypeError: ‘bytes‘ object does not support item assignment

Traceback (most recent call last):
  File "delete_jenkins_job.py", line 42, in <module>
    main()
  File "delete_jenkins_job.py", line 37, in main
    delete_jenkins_workspace(server, job)
  File "delete_jenkins_job.py", line 14, in delete_jenkins_workspace
    server.wipeout_job_workspace(job)
  File "/usr/local/lib/python3.5/dist-packages/jenkins/__init__.py", line 1426, in wipeout_job_workspace
    locals()), b''))
  File "/usr/local/lib/python3.5/dist-packages/jenkins/__init__.py", line 557, in jenkins_open
    return self.jenkins_request(req, add_crumb, resolve_auth).text
  File "/usr/local/lib/python3.5/dist-packages/jenkins/__init__.py", line 573, in jenkins_request
    self.maybe_add_crumb(req)
  File "/usr/local/lib/python3.5/dist-packages/jenkins/__init__.py", line 379, in maybe_add_crumb
    req.headers[self.crumb['crumbRequestField']] = self.crumb['crumb']
TypeError: 'bytes' object does not support item assignment

执行Jenkins.wipeout_job_workspace()时可能报此错误
3. 环境

python版本:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
  1. 原因和解决方案

在该模块的源文件site-packages\jenkins\__init__.py中,大约1426行,调用requests.Request时传入了一个参数,b'',导致异常,此参数为发起http请求时的自定义请求头,应该传入字典类型或None

self.jenkins_open(requests.Request('POST',
	self._build_url(WIPEOUT_JOB_WORKSPACE,
                    locals()), b''))

去掉b''即可正常使用

self.jenkins_open(requests.Request('POST',
	self._build_url(WIPEOUT_JOB_WORKSPACE,
                    locals())))

工具简介
python-jenkins是一个通过Jenkins REST API来操作Jenkins的python模块,安装方法

pip install python-jenkins
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值