python被游标坑了
2018-06-18 01:17:22来源:未知 阅读 ()
为了方便,这次就不单独写脚本了,直接一步一步执行下来就好了
先说下游标,就是一个指针,比如我有
1
2
3
4
每条占一行,那么初始游标默认是在1的位置,当read(1)后,游标自动向下next,现在指在2的位置,依次类推,然后是3,4直到最后,除非强制移动游标,否则游标不会再返回的
今天写了一个脚本,具体就是有两个txt,a.txt和b.txt,从a.txt里面取值,去b.txt里面查看,是否存在,如果存在就把这条print出来
上例子
#先创建个a.txt file_a = open('a.txt','w') #在当前目录下创建a.txt,写入模式,如果不确定目录先os.getcwd(),不然找不到不怪我哦 file_a.write('3\n9\n5\n4\n') #写入数据 file_a.close() file_b = open('b.txt','w') for i in range(10): file_b.write(str(i)+'\n') #写入1\n2\n3\n....9\n file_b.close() #下面来读取匹配下 file_a = open('a.txt','r') file_b = open('b.txt','r') for x in file_a: x = x.strip() for y in file_b: y = y.strip() if x == y: print x break #结果是3\n9\n,只有3和9,这下懵逼了,应该是3\n9\n5\n4\n啊 file_a.close() file_b.close() #结果这破玩意我改了一个小时,怎么都是3,然后觉得这样没有啥效果,仔细想了一下,原来是游标的问题,尼玛的 #我来解释下,因为file_a的类型是file,而file类型是使用指针的,就是和我上面说的一样,除非强制移动,否则游标不会再返回的 #就是说在嵌套循环里面for y in file_b的时候匹配到3了,那么游标停在3上,下一个是9,那么第二轮是从3开始向下找,找到9,9之后就再没有了,所以无论怎么匹配也匹配不到的 #知道原因在哪里就好办了,有两种办法,先说第一种把,用seek(0)将游标移动到开始 file_a = open('a.txt','r') file_b = open('b.txt','r') for x in file_a: x = x.strip() for y in file_b: y = y.strip() if x == y: print x file_b.seek(0) break file_a.close() file_b.close() #第二种是用readlines,把文件里的数据按行read成list,list是没有游标概念的,list只有下标,每次都会从头循环 file_a = open('a.txt','r') file_b = open('b.txt','r') file_b_list = file_b.readlines() #只改file_b就可以了,因为a是主表 for x in file_a: x = x.strip() for y in file_b_list: y = y.strip() if x == y: print x break file_a.close() file_b.close() #我建议用第二种,因为第一种需要有游标重置的动作,虽然几条没有影响,不过如果是几千万的话影响应该会很大把,不过话说回来了,几千万谁还会用嵌套循环呢,hash或二分法才是正确的选择,当然最快的一定是树查询
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash