第一个Python脚本,期待着各位的点评 ~

2012-08-24 23:24:44 +08:00
 tedd
用了整个下午+饭后到现在的时间才把这个脚本憋出来,先后买了<可爱的Python>、<Python核心编程>,以及一大堆Python电子书,但都没有看完过,光看书容易要不了会儿就打瞌睡了...,那还是直接用吧,不懂的地方就Google,譬如我在写这个脚本中Google过‘python how to write dictionary into file’ 以及一些抱错信息。

这算是自己的第一个Python脚本,期待着各位的点评,脚本的结构、数据结构的应用等任何意见和建议我都洗耳恭听,相信通过实战更加能帮助我的学习,谢谢先 ~

# -*- coding: cp936 -*-

# 脚本用途:通过已有的issue key,调用jira soap api getAvailableActions by issue key,获取每个issue当前available的action值,放入字典并写入文件

import SOAPpy
import SOAPpy.Types

soap = SOAPpy.WSDL.Proxy('https://...?wsdl')
user = 'xxx'
password = 'xxx'
auth = soap.login(user, password)

# 将所有issue key手动作为list载入,400 < len(issueKeys) <2500,这么大的list会影响运行速度吗?
issueKeys = ['issueKey001', 'issueKey002',...]

issueDict = {}

# 创建函数,调用jira soap api getAvailableActions by issue key,原本是在接下来这段代码的loop中直接调用这个api,但一直出错,只有先定义个函数将值抓出来
def getActions(issueKey):
return soap.getAvailableActions(auth, issueKey)

# 遍历所有issue key,将所有issue下available的action找出来并放到{issueKey:action}字典中去
for issueKey in issueKeys:
for action in getActions(issueKey):
issueDict[issueKey] = action['name']

f = open(r'c:/test.txt','w')

# 发现网络掉包严重的时候无法将所有的action获取到,因此加入了如下这个if...else...条件
if len(issueDict) != len(issueKeys):
f.write('oops...please try it again...')
f.close()
else:
# 遍历字典,写入文件,issueKey availbleAction
for k in issueDict.keys():
f.write(k)
f.write(' ')
for i in issueDict[k]:
f.write('%s' % i)
f.write('\n')
f.close()
3446 次点击
所在节点    Python
9 条回复
fanzeyi
2012-08-24 23:25:29 +08:00
代码可以贴到 gist.github.com
tedd
2012-08-24 23:30:57 +08:00
谢谢@fanzeyi,我来试下

git://gist.github.com/3452007.git
<script src="https://gist.github.com/3452007.js"> </script>
fanzeyi
2012-08-24 23:31:36 +08:00
tedd
2012-08-24 23:33:04 +08:00
请问@fanzeyi 这是如何贴出来的呢?我将两个链接都直接贴了出来但是都没有反应
lidashuang
2012-08-24 23:34:01 +08:00
fanzeyi
2012-08-24 23:34:37 +08:00
@tedd http://gist.github.com/ + 编号 就行了
tedd
2012-08-25 07:34:53 +08:00
谢谢fanzeyi,又学到一条
alsotang
2012-08-25 22:35:57 +08:00
for action in getActions(issueKey):
issueDict[issueKey] = action['name']
这一句看着不舒服,我怀疑issueDict里面会有issueKey被replace掉

把dict写入文件的话,不知你写入文件的目的是什么。可以用JSON来保存吧我想,因为毕竟都是字符串嘛;如果不那么通用的话,Python自带了cPickle可以用啊,用来序列化存储Python数据结构的。

auth的命名建议用g_auth,在getActions里面见到auth这个不知来源的变量名觉得突兀。
tioover
2012-08-25 23:51:44 +08:00
@livid 见 #3 是不是应该在CSS里面指定 .gist 的宽度?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/45971

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX