tag 标签: python

相关帖子
版块 作者 回复/查看 最后发表
下载:笨办法学 Python(中文)& SICP Python描述 嵌入式系统与MCU anon395 2017-3-7 18 4183 tnsvv 2018-12-14 13:23
单片机,FPGA都能跑! Python正向硬件圈杀来!再不学Python就晚了 可编程器件 tewen 2017-8-10 2 10026 allen 2017-10-23 08:34
【和Cool狗一起学Python】入门基础: 数据类型 | 变量 | 运算符 机器人技术与设计 是木科技 2017-8-17 5 1184 238112554_qq 2017-8-28 04:59
【和Cool狗一起学Python】入门基础: 列表(list) 机器人技术与设计 是木科技 2017-8-18 4 684 cooldog123pp_41 2017-8-18 03:28
【和Cool狗一起学Python】入门基础: 元组(tuple) 机器人技术与设计 是木科技 2017-8-20 1 689 ev711 2018-11-27 14:49
【和Cool狗一起学Python】入门基础: 字典(dict) 机器人技术与设计 是木科技 2017-8-22 3 628 Q三 2017-8-22 06:48
【和Cool狗一起学Python】入门基础: 集合(set) 机器人技术与设计 是木科技 2017-8-24 2 620 tiancegis 2018-11-12 18:08
【和Cool狗一起学Python】入门基础:函数详解 机器人技术与设计 是木科技 2017-8-29 1 930 ev711 2017-8-29 08:47
Python入门基础贴连载:和Cool狗一起学Python 机器人技术与设计 面包板社区管理员 2017-8-29 2 1784 sanlik深力科 2018-11-24 16:20
【和Cool狗一起学Python】入门基础:控制流 机器人技术与设计 是木科技 2017-9-4 2 753 T.b.K 2017-9-8 06:32
Python一小时入门 digest 嵌入式系统与MCU techff 2017-9-14 10 5405 tiancegis 2018-11-12 17:51
【好书推荐】Python编程:从入门到实践 attach_img digest 嵌入式系统与MCU allen 2017-9-21 32 8733 佐佑 2019-1-12 15:35
硬件大杀器:能画PCB还能替代MATLAB?! 电子技术基础 tewen 2017-10-20 0 7336 zhujun74_602010 2018-11-26 14:20
用Python仿真RC电路瞬时响应 attach_img EDA工具与IC设计 tewen 2017-10-25 0 1937 匿名 2018-12-8 14:14
150个学习资料:机器学习、数学、Python、NLP 机器人技术与设计 Killoser 2018-1-30 8 2679 sanlik深力科 2018-11-30 15:33
Python项目开发实战 attachment MicroPython技术交流 mjw0023 2018-7-7 8 1899 myb0201_3786749 2018-9-28 16:40
像蟒蛇一样思考,16本优秀的Python电子书 attachment MicroPython技术交流 Killoser 2018-8-23 29 9568 335667301_70825 7 天前
Python 和 Pygame 写游戏 - 从入门到精通 attachment 机器人技术与设计 机智三极管 2018-10-17 3 547 浩淼江滩 2019-1-21 10:22
Python这么火,要学吗?听听华为的工程师怎么说 attach_img digest 机器人技术与设计 Killoser 2018-12-4 3 12095 978461154_qq 2019-1-5 12:13
资料,Python编程快速上手 attachment 机器人技术与设计 shusu 2018-12-5 8 1424 rolencelin 2019-1-23 10:57
相关日志
Python爬虫学习笔记(7)——淘宝商品信息爬取
LoneSurvivor 2017-11-12 09:31
(一)1、功能描述: 目标:获取淘宝搜索页面的信息,提取商品名称和价格; 理解:淘宝的搜索接口,翻页的处理; 技术路线 : requests,re 2、程序的结构设计、 步骤1:提交商品搜索请求,循环获取页面; 步骤2:对每个页面,提取商品名称和价格信息; (二)代码 import requests import re def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return def parsePage(ilt,html): try: plt = re.findall(r'\view_price\:\ *\',html) tlt = re.findall(r'\raw_title\\:\.*?',html) for i in range(len(plt)): price = eval(plt .split(':') ) title = eval(tlt .split(':') ) ilt.append( ) except: print() def printGoodsList(ilt): tplt = {:4}\t{:8}\t{:16} print(tplt.format(序号,价格,商品名称)) count = 0 for g in ilt: count = count +1 print(tplt.format(count,g ,g )) def main(): goods = 书包 depth = 2; start_url = http://s.taobao.com/search?q= + goods infoList=[] for i in range(depth): try: url = start_url + s= + str(44*i) html = getHTMLText(url) parsePage(infoList,html) except: continue printGoodsList(infoList) 输出结果 ​ ​
354 次阅读|0 个评论
Python爬虫学习笔记(8)——股票数据爬虫
LoneSurvivor 2017-11-11 17:01
(一) 功能描述: 目标:获取上交所和深交所所有股票的名称和交易信息; 输出:保存到文件 技术路线:requests-bs4-re 候选数据网站的选择 新浪股票: http://finance.sina.com.cn/stock/ 百度股票: https://gupiao.baidu.com/stock/ 网站选取原则: 股票信息静态存在于HTML页面中,非js代码生成,没有robots协议限制; 程序的结构设计 步骤1:从东方财富网获取股票列表; 步骤2:根据股票列表逐个到百度股票获取个股信息; 步骤3:将结果存储到文件; (二)代码 import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url,code='utf-8'): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = code return r.text except: return def getStockList(lst,stockURL): html = getHTMLText(stockURL,'GB2312') soup = BeautifulSoup(html,'html.parser') a = soup.find_all('a') for i in a: try: href = i.attrs lst.append(re.findall(r \d{6},href) ) except: continue def getStockInfo(lst,stockURL,fpath): count = 0 for stock in lst: url = stockURL + stock + .html html = getHTMLText(url) try: if html == : continue infoDict = {} soup=BeautifulSoup(html,'html.parser') stockInfo = soup.find('div',attrs={'class':'stock-bets'}) name = stockInfo.find_all(attrs={'class':'bets-name'}) infoDict.update({'股票名称':name.text.split() }) keyList = stockInfo.find_all('dt') valueList = stockInfo.find_all('dd') for i in range(len(keyList)): key = keyList .text val = valueList .text infoDict = val with open(fpath,'a',encoding='utf-8') as f: f.write(str(infoDict)+'\n') count = count + 1 print(\r当前进度:{:.2f}%.format(count*100/len(lst)),end=) except: traceback.print_exc() continue def main(): stock_list_url = http://quote.eastmoney.com/stocklist.html stock_info_url = https://gupiao.baidu.com/stock/ output_file = H://BaiduStockInfo.txt slist=[] ​ ​ getStockList(slist,stock_list_url) getStockInfo(slist,stock_info_url,output_file) main()  
625 次阅读|0 个评论
Python爬虫学习笔记(6)——正则表达式
LoneSurvivor 2017-11-10 09:23
(一)正则表达式: 通用的字符串表达框架; 简洁表达一组字符串的表达式; 针对字符串表达“简洁”和“特征”思想的工具; 判断某字符串的特征归属; 正则表达式在文本中的常见作用: 表达文本类型的特征(病毒); 同时查找或替换一组字符串; 匹配字符串的全部或部分; 正则表达式的使用: 编译:将符合正则表达式语法的字符串转换成正则表达式特征。 (二)正则表达式的语法 (三)正则常用的操作符 (四)正则表达式实例 (五)re库的主要功能函数 正则表达式的表示类型 (1)raw string 类型(原生字符串类型) re 库采用 raw string 类型表示正则表达式,表示为 r’text’ 。 例如:大陆地区的邮政编码 : r’ \d{5}’        国内的电话号码: r’\d{3}-\d{8}|\d{4}-\d{7}’    原生字符串类型是不包含转义符的字符串。 (2)string 类型,更加繁琐     例如 ’ \\d{5} ’                   ’\\d{3}-\\d{8}|\\d{4}-\\d{7}’ 所以当正则表达式包含转义字符时,使用 raw string 。 1、re.search(pattern,string,flags=0) 在一个字符串中搜索匹配正则表达式的第一个位置,返回 match 对象。 pattern: 正则表达式的字符串或原生字符串的表示 ; string: 带匹配字符串; flags: 正则表达式使用时的控制标记; 代码 2、re.match(pattern,string,flags=0) 从一个字符串的开始位置起匹配正则表达式,返回match对象 3、re.findall(pattern,string,flags=0) 搜索字符串,以列表类型返回全部能匹配的子串。 4、re.split(pattern,string,maxsplit=0,flags=0) 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型。 maxsplit: 最大分割数,剩余部分作为最后一个元素输出。 5、re.finditer(pattern,string,flags=0) 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是 match 对象。 6、re.sub(pattern,repl,string,count=0,flags=0) 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串。 Pattern: 正则表达式的字符串或原生字符串表示; Repl: 替换匹配字符串的字符串; String: 待匹配的字符串; Count: 匹配的最大替换数; (六)re库的另一种用法 (七)match对象 1、match对象的属性 2、match对象的方法 (八)re库的贪婪匹配和最小匹配 Re 库默认采用贪婪匹配,即输出匹配最长的字符串。 1、最小匹配操作符 ​ ​
246 次阅读|0 个评论
Python爬虫学习笔记(5)——爬取中国大学排名信息
LoneSurvivor 2017-11-9 15:18
(一) 功能描述 输入 : 大学排名 URL 链接 输出:大学排名信息的屏幕输出(排名,大学名字,总分) 技术路线: requests-bs4 定向爬虫:仅对输入 URL 进行爬取,不扩展爬取 程序的结构设计 步骤 1 :从网络上获取大学排名网页内容;getHTMLText() 步骤 2 :提取网页内容中信息到合适的数据结构;fillUnivList() 步骤 3 :利用数据结构展示并输出结果;printUnivList() (二)代码实现 import requests import bs4 from bs4 import BeautifulSoup def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return def fillUnivList(ulist,html): soup = BeautifulSoup(html,html.parser) for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): tds = tr('td') ulist.append( .string,tds .string,tds .string]) def printUnivList(ulist,num): print({:^10}\t{:^6}\t{:^10}.format(排名,学校名字,所在地)) for i in range(num): u = ulist print({:^10}\t{:^6}\t{:^10}.format(u ,u ,u )) def main(): uinfo = [] url = http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html html = getHTMLText(url) fillUnivList(uinfo,html) printUnivList(uinfo,20) main() 输出效果 ​ ​ (三)中文对齐的原因 当中文字符宽度不够时,采用西文字符填充;中西文字符占用的宽度不同。 采用中文字符的空格填充 chr(12288)
257 次阅读|0 个评论
Python爬虫学习笔记(4)——信息组织和提取
LoneSurvivor 2017-11-9 09:02
YAML: 信息无类型,文本信息比例最高,可读性好 (一)信息的标记 标记后的信息可以形成信息组织结构,增加了维度; 标记后的信息可以用于通信、存储或展示; 标记的结构与信息一样具有重要的价值; 1、XML XML: 最早的通用标记语言,可扩展性好,但是繁琐; Internet 上的信息交互与传递; 2、JSON JSON: 信息有类型,适合程序处理,较 XML 简洁; 移动应用云端和节点的信息通信,无注释; 3、YAML YAML:信息无类型,文本信息比例最高,可读性好 各类系统的配置文件,有注释易读 (二)信息的提取 方法一:完整解析信息的标记形式,再提取关键信息。需要标记解析器,例如: bs4 库的标签树遍历;      优点:信息解析准确;      缺点:提取过程繁琐,速度慢 方法二:无视标记形式,直接搜索关键信息 测试代码 1、.find_all(name,attrs,recursive,string,**kwargs)   返回一个列表 类型,存储查找结果。 (1) name: 对标签名称的检索字符串 (2)attrs: 对标签属性值检索的字符串,可标注属性检索 (3)recursive: 是否对子孙全部检索,默认 True (4)string: …/ 中字符串区域的检索字符串 ​ ​
238 次阅读|0 个评论
Python爬虫学习笔记(3)——Beautiful Soup 库
LoneSurvivor 2017-11-8 19:16
Beautiful Soup 可以对 html,xml 格式进行解析并且提取相关的信息。 参考链接: https://www.crummy.com/software/BeautifulSoup/ (一)Beautiful Soup的使用 from bs4 import BeautifulSoup soup = BeautifulSoup(‘pdata/p’,’html.parser’) 测试代码 (二)Beautiful Soup 库解析器 Beautiful Soup 类的基本元素 测试代码 (三)用bs4库遍历HTML 1、HTML基本格式 2、标签数的下行遍历 (1)head标签 (2)body标签 (3)遍历儿子节点 3、标签树的上行遍历 测试代码 4、标签树的平行遍历 平行遍历发生在同一个父节点下 测试代码 (四)bs4库的HTML格式化和编码 bs4库将任何读入的HTML代码和字符串转换为utf-8编码 ​ ​
286 次阅读|0 个评论
Python爬虫学习笔记(2)——爬虫实例
LoneSurvivor 2017-11-8 13:47
(一)爬取京东商品信息 (二)爬取亚马逊商品信息 (三)网络图片的爬取和存储 (四)百度360搜索关键字提交 搜索引擎关键词提交接口: 百度: http://www.baidu.com/s?wd=keyword 360: http://www.so.com/s?q=keyword (五)IP地址归属地自动查询 ​ ​
个人分类: Python爬虫学习笔记|540 次阅读|0 个评论
Python爬虫学习笔记(1)——requests库
LoneSurvivor 2017-11-7 13:50
1、Requests库介绍 Requests 库是 Python 的第三方库,它也是目前公认的爬取网页的最好的第三方库。它的使用比较简洁,甚至用一行代码就可以获取相关的资源,更多的关于 Requests 库的信息可以在 http://www.python-requests.org 看到。 2、测试requests库 状态码是200,说明访问成功 更改它的编码,然后输出网页内容 requests库的常用方法 3、requests库的get方法 获得一个网页的最简单的一行代码就是: r = requests.get(url) 通过 get 和 url 构造了一个向服务器请求资源的 Request 对象,返回一个包含服务器资源的 Response 对象。 requests.get(url,params=None,**kwargs) url: 拟获取页面的 url 链接; params: url 中的额外参数,字典或字节流格式,可选; **kwargs: 12 个控制访问的参数; 4、Response对象 Response 属性 r.encoding: 如果 header 中不存在 charset, 则认为编码为 ISO-8859-1 5、requests库的异常 r.raise_for_status() : 如果不是 200 ,产生异常 requests.HTTPError 6、爬取网页的通用代码框架 import requests def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() #如果状态不是200,引发HTTPError异常 r.encoding = r.apparent_encoding return r.text except: return "发生了异常" if __name__=="__main__": url = "http://www.baidu.com" print(getHTMLText(url)) 7、HTTP协议 HTTP,Hypertext Transfer Protocol, 超文本传输协议。它是一个基于请求与响应模式的、无状态的应用层协议。它采用 URL 作为定位网络资源的标识。 URL 格式 http://host host: 合法的主机域名或者 IP 地址; port: 默认为 80 ; path: 请求资源的路径; HTTP对资源的操作 HTTP协议与requests库的功能 requests库的head()方法 requests库的post()方法 8、requests库的主要方法 (1) requests.request(method,url,**kwargs) method: 请求方式,对应 get/put/post 等 7 种 **kwargs: 控制访问参数,共 13 个 (2)**kwargs(13个可选参数 ​ ​ ) params: 字典或者字节序列,作为参数增加到 url data: 字典、字节序列或文件对象 json ; JSON 格式的数据,作为 Requests 的内容 headers: 字典, HTTP 定制头 hd = {'user-agent':'Chrome/10'} r = requests.request('POST','http://python123.io/ws',header=hd) cookies: 字典或 CookieJar,Request 中的 cookie auth: 元祖,支持 HTTP 认证功能 file: 字典类型,传输文件 fs = {'file':open('data.xls','rb')} r = requests.request('POST','http://python123.io/ws',files=fs) timeout: 设定超时时间 proxies: 字典类型,设定访问代理服务器,可以增加登录认证 allow_redirects: True/False, 默认为 True, 重定向开关; stream: True/False, 默认为 True, 获取内容立即下载开关; verify: True/False, 默认为 True, 认证 SSL 证书开关; cert: 本地 SSL 证书路径
个人分类: Python爬虫学习笔记|380 次阅读|0 个评论
Python 简单爬虫(1)使用xpath页面解析技术
LoneSurvivor 2017-10-22 09:33
       这次要爬取的信息取自于IMDB电影排行榜,网址为: http://www.imdb.cn/imdb250/1       首先我们先简单获取一下电影的名字,为了定位html的各种元素,给谷歌浏览器装一个 XPath Helper,在工具栏打开它,按住shift 键,把鼠标移动到网页上的你要获取的元素上,就可以获得它的位置信息。       1、下面我们先尝试获取电影标题的位置 具体代码如下: from lxml import html x = html.parse('http://www.imdb.cn/imdb250/1') titles = x.xpath(//div /p /text()) print(we got %s titles % len(titles)) for title in titles:        print(title) 输出结果: we got 30 titles 肖申克的救赎 教父 教父:II 低俗小说 黄金三镖客 蝙蝠侠前传2:黑暗骑士 十二怒汉 辛德勒名单 指环王:王者归来 搏击俱乐部 星球大战Ⅴ:帝国反击战 指环王:护戒使者 飞越疯人院 盗梦空间 好家伙 星球大战IV:新希望 七武士 阿甘正传 黑客帝国 指环王:双塔奇兵 上帝之城 七宗罪 沉默的羔羊 西部往事 卡萨布兰卡 非常嫌疑犯 夺宝奇兵 后窗 美好人生 惊魂记 2、接下来我们获取电影的打分 先定位分数的位置信息 具体代码如下 scores = x.xpath(//div /span/i/text()) for score in scores:      print(score)   输出结果如下: 9.3 9.2 9.1 9.0 9.0 9.0 8.9 8.9 8.9 8.9 8.8 8.8 8.8 8.8 8.8 8.8 8.8 8.7 8.7 8.7 8.7 8.7 8.7 8.7 8.7 8.7 8.7 8.7 8.7 8.6 3、接下来用一个循环将电影的配图的位置,电影标题,导演信息,得分打印出来 具体代码如下: groups = x.xpath(//div ) for group in groups:       print(''.join(group.xpath(.//div /img/@src)))       print(''.join(group.xpath(.//div /p /text())))       print(导演: +''.join(group.xpath(.//div /p /span/text())))       print(得分: +''.join(group.xpath(.//div /span/i/text()))) 输出结果如下: 肖申克的救赎 导演: 弗兰克·达拉邦特 Frank Darabont 得分: 9.3 http://posters.imdb.cn/upload/2016/08/26/NGiDp8KS3_1472192982.jpg 教父 导演: 弗朗西斯·福特·科波拉 Francis Ford Coppola 得分: 9.2 http://posters.imdb.cn/upload/1980/07/07/RgYKt147N_1180702311.jpg 教父:II 导演: 弗朗西斯·福特·科波拉 Francis Ford Coppola 得分: 9.1 http://posters.imdb.cn/upload/2003/03/08/1Bhi80Jxx_1177989811.jpg 低俗小说 导演: 昆汀·塔伦蒂诺 Quentin Tarantino 得分: 9.0 http://posters.imdb.cn/upload/1999/03/29/62RLIR9saC_1148432357.jpg 黄金三镖客 导演: 塞尔吉奥·莱昂内 Sergio Leone 得分: 9.0 http://posters.imdb.cn/upload/2003/03/09/H53YRAY3c_1185655314.jpg 蝙蝠侠前传2:黑暗骑士 导演: 未知 得分: 9.0 http://posters.imdb.cn/upload/1981/07/02/IJomLjvZq_1184375616.jpg 十二怒汉 导演: 西德尼·吕美特 Sidney Lumet 得分: 8.9 http://posters.imdb.cn/upload/1993/11/30/3G9eR4Qe0m_1148433560.jpg 辛德勒名单 导演: 斯蒂芬·斯皮尔伯格 Steven Spielberg 得分: 8.9 http://posters.imdb.cn/upload/2003/12/01/A6kPq4OM8m_1148433000.jpg 指环王:王者归来 导演: 彼得·杰克逊 Peter Jackson 得分: 8.9 http://posters.imdb.cn/upload/2016/08/22/zZYTGWIlI_1471858567.jpg 搏击俱乐部 导演: 大卫·芬奇 David Fincher 得分: 8.9 http://posters.imdb.cn/upload/2005/02/25/FvpoLHox7_1261978983.jpg 星球大战Ⅴ:帝国反击战 导演: 伊文·克什纳 Irvin Kershner 得分: 8.8 http://posters.imdb.cn/upload/2001/12/10/0OZLVvKvdo_1148432167.jpg 指环王:护戒使者 导演: 彼得·杰克逊 Peter Jackson 得分: 8.8 http://posters.imdb.cn/upload/1975/11/19/vPcUO8N1JX_1148432618.jpg 飞越疯人院 导演: 米洛斯·福尔曼 Milos Forman 得分: 8.8 http://posters.imdb.cn/upload/2001/03/18/2bDnAdeIN_1261504270.jpg 盗梦空间 导演: 克里斯托弗·诺兰 Christopher Nolan 得分: 8.8 http://posters.imdb.cn/upload/1990/09/12/zr0dECk4VD_1148432487.jpg 好家伙 导演: 马丁·斯科塞斯 Martin Scorsese 得分: 8.8 http://posters.imdb.cn/upload/1977/05/25/qiobjJQrsg_1148433786.jpg 星球大战IV:新希望 导演: 乔治·卢卡斯 George Lucas 得分: 8.8 http://posters.imdb.cn/upload/1993/04/29/SUwvkCYhEY_1148432352.jpg 七武士 导演: 黑泽明 Akira Kurosawa 得分: 8.8 http://posters.imdb.cn/upload/1994/06/23/7yM8yMKOF1_1148432608.jpg 阿甘正传 导演: 罗伯特·泽米基斯 Robert Zemeckis 得分: 8.7 http://posters.imdb.cn/upload/1999/03/31/0bDwLci3Qx_1148433202.jpg 黑客帝国 导演: 安迪·沃卓斯基 Andy Wachowski|拉娜·沃卓斯基 Lana Wachowski 得分: 8.7 http://posters.imdb.cn/upload/2002/12/05/wYy6gEZVON_1148433036.jpg 指环王:双塔奇兵 导演: 彼得·杰克逊 Peter Jackson 得分: 8.7 http://posters.imdb.cn/upload/2002/05/18/gAotRuG7Pm_1148433878.jpg 上帝之城 导演: 费尔南多·梅里尔斯 Fernando Meirelles|卡提亚·路德 Kátia Lund 得分: 8.7 http://posters.imdb.cn/upload/1998/04/03/rYmevemmD_1176897330.jpg 七宗罪 导演: 大卫·芬奇 David Fincher 得分: 8.7 http://posters.imdb.cn/upload/1991/01/30/9pu3UM6c3p_1148432319.jpg 沉默的羔羊 导演: 乔纳森·戴米 Jonathan Demme 得分: 8.7 http://posters.imdb.cn/upload/1999/03/29/lTlZlsNVbn_1148433582.jpg 西部往事 导演: 塞尔吉奥·莱昂内 Sergio Leone 得分: 8.7 http://posters.imdb.cn/upload/2003/03/08/A4h3fojJNs_1148432891.jpg 卡萨布兰卡 导演: 迈克尔·柯蒂兹 Michael Curtiz 得分: 8.7 http://posters.imdb.cn/upload/1995/07/19/PNuDIlc9e3_1148432991.jpg 非常嫌疑犯 导演: 布莱恩·辛格 Bryan Singer 得分: 8.7 http://posters.imdb.cn/upload/1981/06/12/hj0ONIGMQI_1148432293.jpg 夺宝奇兵 导演: 斯蒂芬·斯皮尔伯格 Steven Spielberg 得分: 8.7 http://posters.imdb.cn/upload/1992/05/04/oVAGCyWgmx_1148433997.jpg 后窗 导演: 阿尔弗雷德·希区柯克 Alfred Hitchcock 得分: 8.7 http://posters.imdb.cn/upload/2006/02/20/CTEqb7WpZo_1148432535.jpg 美好人生 导演: 弗兰克·卡普拉 Frank Capra 得分: 8.7 http://posters.imdb.cn/upload/2002/03/13/VEIZwLc3f_1230042901.jpg 惊魂记 导演: 阿尔弗雷德·希区柯克 Alfred Hitchcock 得分: 8.6 4、实现翻页功能 代码如下 from time import sleep from lxml import html titles = /a /@href headline_xpath = //div /p /text() while len(titles) 260 and next_page:     dom = html.parse(next_page)     headlines = dom.xpath(headline_xpath)     print(Get {} titles from url {}.format(len(headlines),next_page))     titles += headlines     next_pages = dom.xpath(next_button_xpath)     if next_pages:              next_page = base_url.format(next_pages )     else:              print(No next button found\n)               next_page = None sleep(3) print(Total %s movies collected,top 25 titles: %len(titles)) for title in titles:           print(title) 输出如下 Get 30 titles from url http://www.imdb.cn/imdb250/1 Get 30 titles from url http://www.imdb.cn/imdb250/2 Get 30 titles from url http://www.imdb.cn/imdb250/3 Get 30 titles from url http://www.imdb.cn/imdb250/4 Get 30 titles from url http://www.imdb.cn/imdb250/5 Get 30 titles from url http://www.imdb.cn/imdb250/6 Get 30 titles from url http://www.imdb.cn/imdb250/7 Get 30 titles from url http://www.imdb.cn/imdb250/8 Get 7 titles from url http://www.imdb.cn/imdb250/9 Get 30 titles from url http://www.imdb.cn/imdb250/1 Total 277 movies collected,top 25 titles: 肖申克的救赎 教父 教父:II 低俗小说 黄金三镖客 蝙蝠侠前传2:黑暗骑士 十二怒汉 辛德勒名单 指环王:王者归来 搏击俱乐部 星球大战Ⅴ:帝国反击战 指环王:护戒使者 飞越疯人院 盗梦空间 好家伙 星球大战IV:新希望 七武士 阿甘正传 黑客帝国 指环王:双塔奇兵 上帝之城 七宗罪 沉默的羔羊 西部往事 卡萨布兰卡 非常嫌疑犯 夺宝奇兵 后窗 美好人生 惊魂记 杀手莱昂 日落大道 美国X档案 现代启示录 终结者2:审判日 拯救大兵瑞恩 记忆碎片 城市之光 奇爱博士 异形 摩登时代 千与千寻 西北偏北 回到未来 美丽人生 钢琴家 闪灵 公民凯恩 无间行者 M就是凶手 光荣之路 双重赔偿 蝙蝠侠:黑暗骑士崛起 异形2 出租车司机 美国丽人 绿里奇迹 角斗士 无法触碰 机器人总动员 他人的生活 玩具总动员3 致命魔术 发条橙 阿拉伯的劳伦斯 天使艾美丽 杀死一只知更鸟 落水狗 从海底出击 狮子王 天堂电影院 星球大战VI:绝地武士归来 碧血金沙 第三个人 美国往事 梦之安魂曲 美丽心灵的永恒阳光 全金属外壳 老男孩 勇敢的心 洛城机密 偷自行车的人 唐人街 雨中曲 幽灵公主 巨蟒与圣杯 大都会 热情似火 罗生门 莫扎特 2001:太空漫游 彗星美人 控方证人 骗中骗 公寓 萤火虫之墓 不可饶恕 夺宝奇兵3:圣战奇兵 愤怒的公牛 桂河大桥 虎胆龙威 蝙蝠侠前传:侠影之谜 用心棒 纳德和西敏:一次别离 无耻混蛋 黄昏双镖客 偷拐抢骗 玩具总动员 大逃亡 史密斯先生到华盛顿 飞屋环游记 帝国的毁灭 码头风云 潘神的迷宫 将军号 第七封印 盗火线 象人 弃儿的故事 马耳他雄鹰 银翼杀手 疤面煞星 野草莓 丽贝卡 老爷车 生之欲 冰血暴 乱 大人物勒布斯基 历劫佳人 淘金记 猎鹿人 铁手卢克 老无所依 一夜风流 赌城风云 恶魔 心灵捕手 第六感 列车上的陌生人 野战排 怪形 大白鲨 罪恶之城 虎豹小霸王 猜火车 杀死比尔:第一卷 绿野仙踪 勇士 愤怒的葡萄 谜一样的双眼 卢旺达饭店 正午 飘 安妮·霍尔 龙猫 海底总动员 V字仇杀队 电话情杀案 美人计 复仇者联盟 驯龙高手 荒野生存 布莱恩的一生 猎人的夜晚 血色将至 电视台风云 终结者 宾虚 百万宝贝 夜长梦多 伴我同行 国王的演讲 黄金时代 四百击 土拨鼠日 十二只猴子 玛丽和马克思 哈尔的移动城堡 炎热的下午 唐尼·达克 人格面具 爱情是狗娘 谍影重重3 甘地传 杀手 美丽心灵 毕业生 黑天鹅 公主新娘 灵欲春宵 八部半 江湖浪子 大路 洛奇 桃色血案 双虎屠龙 贫民窟的百万富翁 驱魔人 夺魂索 以父之名 巴里·林登 日落黄沙 满洲候选人 怪物公司 17号囚房 无间道 楚门的世界 三个白痴 杀人回忆 加勒比海盗:黑珍珠号的诅咒 心中的小星星 罗马假日 潜行者 足迹 芬尼与亚历山大 派的生活 哈利·波特与死亡圣器(下) 侏罗纪公园 荒野大镖客 叶问 星际迷航 焦土之城 欲望号街车 禁闭岛 第九区 霍比特人 美食总动员 怒火青春 雨人 潜水钟与蝴蝶 西线无战事 风之谷 罗斯玛丽的婴儿 美女与野兽 巴比龙 神秘河 哈维 日出之前 忠犬八公的故事 冬去春又来 那一晚 不可触犯 肖申克的救赎 教父 教父:II 低俗小说 黄金三镖客 蝙蝠侠前传2:黑暗骑士 十二怒汉 辛德勒名单 指环王:王者归来 搏击俱乐部 星球大战Ⅴ:帝国反击战 指环王:护戒使者 飞越疯人院 盗梦空间 好家伙 星球大战IV:新希望 七武士 阿甘正传 黑客帝国 指环王:双塔奇兵 上帝之城 七宗罪 沉默的羔羊 西部往事 卡萨布兰卡 非常嫌疑犯 夺宝奇兵 后窗 美好人生 惊魂记 5、保存到文 件 with open('IDMB_hot_movies.txt','wb') as out:     out.write('\n'.join(titles).encode('utf-8'))
536 次阅读|0 个评论
在线体验MicroPyhton
shaoziyang 2016-1-9 21:36
MicroPython是一个在单片机上运行的python系统,可以用标准的python语言开发单片机程序,比较有趣。目前它支持STM32F4、PIC33、CC3200、ESP8266、Teensy 3等硬件。它也是成功众筹过的项目。   可以在它的网站上直接输入python程序代码,然后按下RUN运行程序。结果会在网站上直接显示。可以控制LED、液晶、马达等。     http://micropython.org/live/  
288 次阅读|0 个评论
Python 下CRC32校验
热度 1 zhangly_607390952 2014-10-17 11:33
由于项目需要,解决一个流媒体文件的crc32校验码。网上查了很多的资料,发现了此校验码和生成多项式以及算法本身都有关系。对于不同类型的文件所使用的多项式以及算法不同,对于不同的生成多项式所生成的crc32表不同,不同的算法也会产生不同的结果。下面分类比较两种不同用途的crc32校验码的计算方法。 1、普通文件(如压缩文件)的crc32校验码计算方法: 生成多项式采用0xEDB88320,所生成的表为: /*      This polynomial ( 0xEDB88320L) DOES generate the same CRC values as ZMODEM and PKZIP  */ static const u_int32_t crc32tab ) 0xff] ^ (crc 8);  return crc^0xFFFFFFFF; } 2、媒体文件(如mpeg)的crc32校验码计算方法: 生成多项式采用0x04c11db7,所生成的表为: /*      This polynomial (0x04c11db7) is used at: AUTODIN II, Ethernet, FDDI   */ static u_int32_t crc32table = {      0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,      0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,      0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7,      0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,      0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3,      0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,      0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef,      0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,      0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb,      0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,      0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,      0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,      0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4,      0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,      0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08,      0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,      0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc,      0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,      0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050,      0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,      0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,      0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,      0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1,      0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,      0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5,      0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,      0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9,      0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,      0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd,      0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,      0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,      0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,      0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2,      0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,      0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e,      0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,      0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a,      0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,      0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676,      0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,      0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,      0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,      0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 }; 所使用的算法是: u_int32_t  mpeg_crc32(const u_char *data, int len){      int i;      u_int32_t crc = 0xFFFFFFFF;  //0x00000000L         for(i = 0; i len; i++)           crc = (crc 8) ^ crc32table ;          return crc; } 表生成代码 #define CRC32_POLY 0x04C11DB7L unsigned long table ;   unsigned long get_sum_poly( unsigned char top_byte ) {     // sum all the polys at various offsets      unsigned long sum_poly = top_byte 24; int j;     for(j = 0; j 8; ++ j )     {         // check the top bit         if( ( sum_poly 31 ) != 0 )         {             /// TODO : understand why '' first             sum_poly = ( sum_poly 1 ) ^ CRC32_POLY;         }         else         {             sum_poly = 1;         }     }     return sum_poly; }   void create_table( unsigned long *table ) { int i;     for( i = 0; i 256; ++ i )     {         table = get_sum_poly( (unsigned char) i );     } }   在Python 2.5下代码如下:   def mycrc32(szString):     m_pdwCrc32Table =     #dwPolynomial = 0xEDB88320;     dwPolynomial = 0x04C11DB7L;     dwCrc = 0x00000000L     for i in range(0,256):         dwCrc = i         temp = dwCrc 24          dwCrc = temp         for j in :             if (dwCrc31):                 dwCrc = (dwCrc 1) 0xFFFFFFFF                 dwCrc = dwCrc ^ dwPolynomial             else:                 dwCrc = 1         m_pdwCrc32Table = dwCrc         #print "%4x" % m_pdwCrc32Table ,     dwCrc32 = 0x00000000L     for i in szString:         b = ord(i)         numberStr =  b^(dwCrc3224)         numberStr = numberStr 0xFF         dwCrc32 = (dwCrc32 8) ^ m_pdwCrc32Table     dwCrc32 = dwCrc32 0xFFFFFFFFL     return dwCrc32
1465 次阅读|1 个评论
Python - import this
DiracFatCat 2014-8-25 15:49
Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
个人分类: Linux笔记|134 次阅读|0 个评论
【博客大赛】python GUI编程(Tkinter)-语法差异检录
热度 1 coyoo 2014-4-29 11:04
使用Python是想利用其开发之前使用TCL脚本一样开发一些友好的图形界面,并在应用层取代Tcl来开发虚拟JTAG的开发平台。从网上找了一些实例,发现语法差异和3.3.5差异较大,这里给出比较。 以下是网上找的的例子: #!/usr/bin/python import Tkinter top = Tkinter.Tk() # 进入消息循环 top.mainloop() 如果我们直接将其在3.3.5版本中进行编译(和TCL一样,将代码存储在.py文件中后可以直接双击文件看代码解析结果)的话,会报找不到Tkinter模块的错误,如下图所示。 由于刚开始接触Python,以为是tkinter库没有安装,但是查看文档,发现早从2.5版本开始安装Python的同时默认会安装tkinter的。折腾了半天毫无头绪,偶然看见一句话,Python对大小写敏感,而且发现Python在更新版本的时候似乎有个传统,就是一直在更新修改语法规则。所以想是否新版本引用tkinter的时候是不是不需要大写”T“了,抱着试试看的想法,将上述代码修改如下: #!/usr/bin/python import tkinter top = tkinter.Tk() # 进入消息循环 top.mainloop() 将上述代码重新编译,华丽丽的图形出来了,如下图所示: 另外,本人还做了另外一个实验,我们看到上述代码中,有这样一句: ”top = tkinter.Tk()“ 最后的”Tk“中的”T"还是大写,千万不能将其也改成小写,否则还是编译不过去。    
个人分类: Python|716 次阅读|1 个评论
Uedit语法高亮Python代码配置
coyoo 2014-4-29 10:06
/L15"Python" Line Comment = # Escape Char = \ File Extensions = PY PYW /Indent Strings = ":" /Function String 1 = "% ++def +^( +*^):" /Function String 2 = "% ++^(class + +*^):" /Delimiters =  []{}()="'.,:+@ /C1"Reserved Words" and as assert break class continue def del elif else except exec finally for from global if import in is lambda not or object pass print raise range return try while yield /C2"Built-in Functions" __import__ abs apply basestring bool buffer callable chr classmethod cmp coerce compile complex delattr dict dir divmod enumerate eval execfile Ellipsis file filter float frozenset False getattr globals group hasattr hash help hex id input int intern isinstance issubclass iter joinfields len list local long map match max min None NotImplemented oct open ord pow property raw_input reduce reload repr round search set setattr slice sorted str splitfields tuple type True unichr unicode vars xrange zip /C3"__Methods__" __abs__ __add__ __and__ __call__ __cmp__ __coerce__ __contains__ __del__ __delattr__ __delitem__ __delslice__ __div__ __divmod__ __eq__ __float__ __floordiv__  __ge__ __getattribute__ __getitem__ __getnewargs__ __getslice__ __gt__ __hash__ __hex__ __iadd__ __iand__ __idiv__ __ilshift__ __imod__ __imul__ __init__ __int__ __invert__ __ior__ __ipow__ __irshift__ __isub__ __iter__ __ixor__ __le__ __len__ __long__ __lshift__ __lt__ __mod__ __mul__ __ne__ __neg__ __nonzero__ __oct__ __or__ __pos__ __pow__ __radd__ __rand__ __rdiv__ __rdivmod__ __reduce__ __reduce_ex__ __repr__ __reserved__ __rfloordiv__ __rlshift__ __rmod__ __rmul__ __ror__ __rpow__ __rlshift__ __rrshift__ __rshift__ __rsub__ __rtruediv__ __rxor__  __setattr__ __setitem__ __setslice__ __str__ __sub__ __xor__ add append capitalize center clear close conjugate copy count decode difference discard Decimal encode endswith expandtabs extend find flush fileno fromkeys get getcontext has_key index insert intersection intersection_update isalnum isalpha isatty isdigit islower isspace issubset issuperset istitle isupper items iteritems iterkeys itervalues join keys ljust lower lstrip next pop popitem read readline readlines remove replace reverse rfind rindex rjust rsplit rstrip seek setdefault sort split splitlines startswith strip swapcase symmetric_difference symmetric_difference_update tell title translate truncate union update upper values write writelines zfill /C4"__Attributes__" __author__ __bases__ __class__ __dict__ __doc__ __email__ __methods__ __members__ __name__ __slots__ __version__ /C5"Exceptions" ArithmeticError AssertionError AttributeError DeprecationWarning EnvironmentError EOFError Exception FloatingPointError FutureWarning ImportError IndentationError IndexError IOError  KeyboardInterrupt KeyError LookupError MemoryError NameError NotImplementedError OSError OverflowWarning OverflowError PendingDeprecationWarning ReferenceError RuntimeError RuntimeWarning StandardError StopIteration SyntaxError SyntaxWarning SystemError SystemExit TabError TypeError UnboundLocalError UnicodeError UnicodeDecodeError UnicodeEncodeError UnicodeTranslateError UserWarning ValueError Warning WindowsError ZeroDivisionError /C6"Operators" +=  -=  %=  /=  **=  =  |=  ^=  =  = /C7"Common Libs" __builtin__ __future__ __main__ aepack aetools aetypes aifc al anydbm applesingle atexit array asyncore asynchat audioop autoGIL AL AST  base64 binascii binhex bisect bsddb buildtools bz2 BaseHTTPServer Bastion calendar cd cfmfile cgi cgitb chunk cmath cmd code codecs codeop collections colorsys commands compileall cookielib copy_reg cPickle cStringIO csv curses Carbon CGIHTTPServer ColorPicker Complex ConfigParser Cookie datetime dbhash decimal difflib dircache dircmp dis distutils dl doctest dospath dumbdbm dummy_thread dummy_threading DEVICE DocXMLRPCServer emacs email encodings errno exceptions EasyDialogs fcntl filecmp fileinput findertools fl flp fm fmt fnmatch formatter fpectl fpformat ftplib FL FrameWork gc gdbm gensuitemodule getopt getpass gettext gl glob gopherlib grep gzip GL heapq hmac hotshot htmlentitydefs htmllib httplib HTMLParser ic icopen ihooks imaplib imageop imghdr imp imputil inspect itertools jpeg keyword linecache locale lockfile logging mac macerrors macfs macostools macpath macresource macurl2path mailbox mailcap marshal md5 mhlib mimetools mimetypes mimify mmap multifile mutex math MacOS MimeWriter MiniAEFrame netrc new newdir ni nis nntplib nsremote ntpath nturl2path operator optparse os ossaudiodev parser pdb pgdb pickle pickletools pipes pkgutil platform poly popen2 poplib posixfile posixpath pprint profile pstats py_compile pyclbr pydoc pyexpat pythonprefs Para PixMapWrapper quietconsole quopri Queue rand random re regex regsub resource rexec rfc822 rgbimg rlcompleter robotparser rotor sched select sets sgmllib sha shelve shlex shutil signal site smtpd smtplib sndhdr snmp socket stat statcache statvfs string stringprep struct subprocess sunau symbol sys syslog ScrolledText SimpleHTTPServer SimpleXMLRPCServer StringIO SocketServer tabnanny tarfile tb telnetlib tempfile termios test textwrap thread threading time timeit toaiff token tokenize traceback tty turtle types tzparse TERMIOS Tix Tkinter unicodedata unittest urllib urllib2 urlparse user util uu UserDict UserList UserString videoreader warnings waste wave weakref webbrowser whatsound whichdb whrandom winsound xdrlib xml xmllib xmlpackage xmlrpclib zipfile zlib zmod /C8"Others" array cls fnmatch struct self
个人分类: Python|1276 次阅读|0 个评论
【博客大赛】Python3.3.5与老版本语法差别检录(一)
coyoo 2014-4-29 09:56
最近笔者开始在学习Python,网上有很多基础教程,本人根据这些基础教程一边学习,一边记录,发现很多教程都是针对版本2.7,的,现在笔者使用的版本时3.3.5(当前最新版本是3.4)。而3.3.5和和之前2.7版本之间有很多简单的语法差别,这里将笔者体验到的差别列出以供参考:   1. 输入非ASCII字符 如果代码中出现了非ASCII字符,需在源代码中(或者交互解释器)第一行添加使用字符声明: # -- coding: utf-8 --   2. 数值类型 在Python中默认使用整数进行运算,例如: # 输出: 0 print 1/2   如果需要使用浮点数,只需把计算的数加上小数点即可: # 输出: 0.5 print 1.0/2.0 ( 笔者注:当前版本默认应该都是带小数点,如下图所示 )   2.1 长整型数 在Python中普通整数的数值不能超过32位(即最大不能超过:2147,483,647),如果需要使用更大的数值,可以使用长整型数,长整型数的表示方法很简单,只需要在普通整数后面加一个大写的L即可(小写也亦可,不过看起来像是一个1)。如下: 2147483648L ( 笔者注:新版本不知是否有此限制,不过使用print打印的时候并未见此限制 ) 2.2 十六进制和八进制 十六进制数只需要加上前缀: 0x : # 输出: 10 print 0xA ( 笔者注:使用print现在必须使用圆括号"()"才能进行打印,所以上述正确的格式应该是:print (0xA) ) 前缀加上 0 表示八进制数: # 输出: 9 print 011 ( 笔者注:首先print后面必须使用圆括号,其次是八进制数据使用“0o”前缀,固现版本正确语法应该是print (0o11) )      
个人分类: Python|1841 次阅读|0 个评论
Python代码编辑器UliPad 安装过程
zhangly_607390952 2014-3-28 12:08
国人开发的Python代码编辑器UliPad,安装过程 由Python语言开发的代码编辑器-UliPad 支持代码高亮显示,代码智能提示等。很不错的一款Python代码编辑器。唯一的不足是没有集成Python调试器。但是Unipad本身就是定位于专业的代码编辑工具,这在同类中算是很不错的,更不像有些软件集成乱七八糟的不实用功能。。。 Python的好用的编辑器及集成开发环境不多,优秀的更是少见,完全不能匹配Python的大名。。。 Ulipad在同类工具中算是很出类拔萃的了,关键在于很实用!而且是国人领军开发的,一定要支持一下。 下面整理一下我的安装过程,算是对不熟悉Python安装的朋友一点提示吧(以现在的最新版4.0为例): 安装Ulipad的环境: 1.Python 2.5/6/7等。因为Python 3对标准库的结构调整较大,所以对Python 2的程序存在较大的不兼容性,而且Python 2是现在流行的版本,Ulipad即基于此版本 2.wxPython。wxWidget的Python版本,Ulipad的界面就基于此界面库,在这里也强烈推荐Python的GUI程序使用该界面,很漂亮也很实用,远超于tk(当然,这是个人建议,呵呵) 官方网站: http://www.wxpython.org/ 我的网盘下载: http://www.uudisc.com/user/lys2356/file/2567518 3.comtypes库支持。 下载点: http://sourceforge.net/projects/comtypes/files/ 我的网盘下载: http://www.uudisc.com/user/lys2356/file/2567580 安装: 首先安装Python,安装向导会指示安装,所以很简单。安装之后将Python的安装目录添加到系统变量的Path中,这样以后在控制台中使用Python不用输入全路径,会比较方便。 然后安装wxPython,也有安装向导,最好在此之前先安装Python,否则需要自行指定安装目录。 最后,安装comtypes。将comtypes解压到任意目录(最好不要包含中文)。打开cmd,不断cd进入到comtypes的解压目录: 然后执行命令python setup.py install   python的安装组件会自动安装comtypes。 好了!可以使用Ulipad了。将Ulipad解压到任意目录(一样,最好不要包含中文),执行ulipad.pyw即可 截个图吧^_^:
306 次阅读|0 个评论
基于Python定点平方根的FPGA实现
869710179_603238957 2014-2-13 22:17
0 引言 FPGA作为可编程的逻辑器件,它具有功耗低、便于修改、调试等特点,并能在上面实时完成大量的算法,平方根运算作为信号和图像处理中的常见算法,目前在FPGA上有许多实现,但是这些实现方法通常采用目前硬件设计中普遍采用的Verilog和VHDL语言进行硬件设计,这种设计方法存在着仿真和校验效率低,对于复杂的算法和软件设计者之间的沟通较为困难等问题。 Python是一种简单易学并且功能强大的编程语言,并具有强大的软硬件描述能力,MyHDL采用Python扩展包的形式使其能支持硬件设计和仿真并在仿真结果符合要求后可将软件算法自动转换为相应的Verilog或VHDL硬件描述。 本文试图采用这种新的基于Python的软硬件设计方法在FPGA上实现定点平方根。 1 方法 1.1 定点数表示 通常在FPGA上的运算可以采用定点和浮点两种方式来实现,定点运算和浮点运算相比尽管数表示的范围较小,设计较为复杂,但是速度较快,占用FPGA资源较小,本设计采用定点来完成。平方根的输入为非负数,包括符号位为定点32位输入,其中高16位为整数部分,低15位为小数部分,可以直接计算的平方根范围为(65536,0],结果采用32位输出,最高位为符号位,接着的高8位为整数部分,低23位为小数部分。 1.2 平方根实现 平方根的FPGA实现方法很多,有的算法为了减少片上资源的使用,逻辑实现上尽量避免使用乘法,比如CORDIC,逐位计算,non-restoring等,现在FPGA上通常都有硬件乘法器,可采用迭代法和泰勒级数展开,本文采用泰勒级数展开的方法,级数采用5级,系数采用3.15的定点表示形式,小数部分15位,整数部分2位为了保证后续计算结果不溢出,整个位宽为18位,计算公式如式(1)所示: 对于输入x位于(65536,0]之间,由于数的范围较大,通常进行归一化处理,采用的方法通过左移运算去掉二进制定点数的所有前导零,将输入的数转换为定点小数 之间时的平方根误差如图4所示。 2.4 综合结果 在上面仿真校验符合设计要求后,将Python自动转换为Verilog描述,采用Quartus编译综合,并使用Model-sim仿真的波形如图5所示,与图3的Python环境下仿真波形相似,由此可见采用Python的软硬件协同设计方法能有效地进行FPGA设计。综合后FPGA资源使用情况:LE共1506个,寄存器64个,嵌入式9位硬件乘法器10个。 3 结论 本文采用基于Python的扩展包MyHDL的软硬件协同设计方法,在FPGA上完成了定点平方根算法,设计仿真过程仅使用Python语言,所以仿真校验和传统的设计方法相比效率更高,仿真速度也更快,另外此方法还可以方便,有效地将一个软件算法快速地转换为其相应的硬件实现,从而完成软硬件系统协同设计。 现代系统的算法越来越复杂,传统的软硬件设计方法越来越不适应市场对设计的要求,采用Python进行系统设计,仿真和校验的速度会大大地提高,也能够自动将算法转换为对应的硬件实现,所以采用Python来进行软硬件协同设计的产品能更快地进入市场,并且随着设计复杂性的进一步增强和这种设计方法本身的发展和完善,基于Python的软硬件协同设计方法将会有更加广阔的应用前景。
394 次阅读|0 个评论
基于Python定点平方根的FPGA实现
278587899_868517102 2014-1-25 20:07
0 引言 FPGA作为可编程的逻辑器件,它具有功耗低、便于修改、调试等特点,并能在上面实时完成大量的算法,平方根运算作为信号和图像处理中的常见算法,目前在FPGA上有许多实现,但是这些实现方法通常采用目前硬件设计中普遍采用的Verilog和VHDL语言进行硬件设计,这种设计方法存在着仿真和校验效率低,对于复杂的算法和软件设计者之间的沟通较为困难等问题。 Python是一种简单易学并且功能强大的编程语言,并具有强大的软硬件描述能力,MyHDL采用Python扩展包的形式使其能支持硬件设计和仿真并在仿真结果符合要求后可将软件算法自动转换为相应的Verilog或VHDL硬件描述。 本文试图采用这种新的基于Python的软硬件设计方法在FPGA上实现定点平方根。 1 方法 1.1 定点数表示 通常在FPGA上的运算可以采用定点和浮点两种方式来实现,定点运算和浮点运算相比尽管数表示的范围较小,设计较为复杂,但是速度较快,占用FPGA资源较小,本设计采用定点来完成。平方根的输入为非负数,包括符号位为定点32位输入,其中高16位为整数部分,低15位为小数部分,可以直接计算的平方根范围为(65536,0],结果采用32位输出,最高位为符号位,接着的高8位为整数部分,低23位为小数部分。 1.2 平方根实现 平方根的FPGA实现方法很多,有的算法为了减少片上资源的使用,逻辑实现上尽量避免使用乘法,比如CORDIC,逐位计算,non-restoring等,现在FPGA上通常都有硬件乘法器,可采用迭代法和泰勒级数展开,本文采用泰勒级数展开的方法,级数采用5级,系数采用3.15的定点表示形式,小数部分15位,整数部分2位为了保证后续计算结果不溢出,整个位宽为18位,计算公式如式(1)所示: 对于输入x位于(65536,0]之间,由于数的范围较大,通常进行归一化处理,采用的方法通过左移运算去掉二进制定点数的所有前导零,将输入的数转换为定点小数 之间时的平方根误差如图4所示。 2.4 综合结果 在上面仿真校验符合设计要求后,将Python自动转换为Verilog描述,采用Quartus编译综合,并使用Model-sim仿真的波形如图5所示,与图3的Python环境下仿真波形相似,由此可见采用Python的软硬件协同设计方法能有效地进行FPGA设计。综合后FPGA资源使用情况:LE共1506个,寄存器64个,嵌入式9位硬件乘法器10个。 3 结论 本文采用基于Python的扩展包MyHDL的软硬件协同设计方法,在FPGA上完成了定点平方根算法,设计仿真过程仅使用Python语言,所以仿真校验和传统的设计方法相比效率更高,仿真速度也更快,另外此方法还可以方便,有效地将一个软件算法快速地转换为其相应的硬件实现,从而完成软硬件系统协同设计。 现代系统的算法越来越复杂,传统的软硬件设计方法越来越不适应市场对设计的要求,采用Python进行系统设计,仿真和校验的速度会大大地提高,也能够自动将算法转换为对应的硬件实现,所以采用Python来进行软硬件协同设计的产品能更快地进入市场,并且随着设计复杂性的进一步增强和这种设计方法本身的发展和完善,基于Python的软硬件协同设计方法将会有更加广阔的应用前景。
277 次阅读|0 个评论
boost.python
zzgnew_580137939 2014-1-22 18:52
环境准备: 1、 使用 MinGW + MSys 在 Windows 下的编译 首先需要编译的是 Boost 的编译工具 bjam,直接到 bjam 所在目录下,即 Boost 源码包所在目录下的 \tools\build\jam_src ,执行  build.bat mingw ,稍等片刻,bjam.exe 就编译好了。把编译好的 bjam.exe 复制到你的 %PATH%  路径能够直接找到的地方,为后续的编译工作做好准备。 接下来,切换到 Boost 源码所在路径,执行 bjam 进行编译。我们需要提供关于 Python 的一些参数,变量 PYTHON_ROOT 指向 Python 运行环境所在的目录,变量 PYTHON_VERSION 的值为 Python 的版本号,如果你的 Python 安装路径与滇狐不同,请将相应的变量修改为你机器上相应的路径,编译命令行如下: bjam.exe "-sTOOLS=mingw" "-sPYTHON_ROOT=C:\Python27" "-sPYTHON_VERSION=2.7" 编译完毕后(时间较长),你将会在你的“ Boost 源码所在路径 \stage\lib” 下找到编译得到的 Boost 相应库文件, 2、根据你的需要将 编译boost.python的动态链接库 移动到别的地方($Path$能找到的地方)备用。 boost_python-vc120-mt-1_55.dll boost_python-vc120-mt-1_55.lib boost_python-vc120-mt-gd-1_55.lib boost_python-vc120-mt-gd-1_55.lib 用python调用C++代码: 1.在visual studio中新建Win32项目(项目名字为hello_ext)——下一步——应用程序类型选择“DLL”并勾选“空项目”——完成 2.打开:项目——属性——配置属性——C/C++,在附加包含目录中添加$BOOSTDIR的路径和python安装目录下的include路径 3.打开:项目——属性——配置属性——链接器——输入,在附加依赖荐中添加boost_python-vc90-mt-gt-1_55.lib(可从$BOOSTDIR/stage/lib中复制到其他目录下)和python安装目录下的libs/python27.lib 或:打开:项目——属性——配置属性——链接器—-General,在附加库目录中添加boost_python-vc90-mt-gd-1_55.lib所在的目录($BOOSTDIR/stage/lib)和python安装目录下的\libs 4.在项目中添加一个cpp文件World.cpp,在其中输入代码: #include #include #include     using namespace boost::python; char const* greet() { return "hello, world"; }   BOOST_PYTHON_MODULE(hello_ext) {   def("greet", greet); } 5.生成——生成解决方案   生成的dll的文件名一定要和 BOOST_PYTHON_MODULE(hello_ext)导出的符号相同:hello_ext   6.到项目目录下找到刚刚生成的dll,复制到准备保存*.py文件的目录下,并把后缀名从dll改成pyd 7.在第6步中的pyd文件所在的目录下新建一个python文件test.py,输入以下代码:hello.py import hello_ext print hello_ext.greet() 8.python hello.py 即可运行。   注意: 1.World.cpp中的__declspec(dllexport)不要也没关系 2.BOOST_PYTHON_MODULE( BoostPythonTest)中的模块名必须和生成的dll同名,或者在生成dll之后对dll进行重命名,总之,模块名和dll名必须相同 3.不要忘记 环境准备的第2条,如果没有复制该dll,会在运行test.py时报错“ImportError: DLL load failed: 找不到指定的模块。”
3365 次阅读|0 个评论
判断文件是否被另一个程序打开
zzgnew_580137939 2012-8-19 21:35
最近写一个程序需要监控一个文件夹下是否有文件,如果有,则自动打开进行处理。有两种情况: 1、用户从别处复制文件到此文件夹; 2、其他软件输出(或保存)文件到此文件夹; 第一种情况好处理。后一种情况就比较麻烦了,会出现其他软件正在写文件还未结束,本软件就开始对这个文件进行打开和处理了,此时就会出现错误。google了一阵,试了n种方法,终于....                       try:                         Handle = win32file.CreateFile( self.detcetAutoPltDirList ,                                  GENERIC_READ,                                 FILE_SHARE_READ,                                 pywintypes.SECURITY_ATTRIBUTES(),                                 OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0)                     except:                         win32file.CloseHandle(Handle)                         pass#print 'error'#异常,说明有其他程序正在写文件,还未结束                     else:                         #print 'ok'                         #正常,说明没有其他程序在写此文件,可以打开文件,进行后续处理                         .......................  
2003 次阅读|0 个评论
广告