当前位置:首页 > 商讯 >

Python 小程序,对文件操作及其他

编辑:北京聚贤贵都宾馆有限公司时间:2017-09-06 13:16:47阅读次数:2
Python 小程序,对文件操作及其他

下面是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等。比如说,从文件中读取一行数据,分别存放于列表中,再对列表进行操作,如去掉里面的重复项,排序等操作。

常见对文件中行进行操作:

#这里列出两个常用的方法

方法01: 一次性读取所有行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print line 方法02: 一行行读取 >>> f = file('1.txt') >>> while f: line = f.readline() if len(line) == 0: break else: print line,

常见对列表去重复项操作:

方法01: 函数处理

#列表中值超过1者表示有重复则删除,比如:

#列表顺序==>改变

>>> list1.count(3) #元素值为3的个数:2个 2 >>> def removeDup(lst): for x in lst: if lst.count(x)>1: del lst[lst.index(x)] >>> lst = [1,3,2,4,3] >>> removeDup(lst) >>> lst [1, 2, 4, 3] 方法02: 常规方法

#建新空列表,遍历原始列表,如果不在新空列表中,则添加

#列表顺序==>不变

>>> list1 = [1,3,2,4,3] >>> list2 = [] >>> for i in list1: if i not in list2: list2.append(i) >>> list2 [1, 3, 2, 4] 方法03: 字典方法

#利用字典key值的唯一性,及里面的fromkeys()及keys()方法

>>> list1 = [1,3,2,4,3] >>> list2 = {}.fromkeys(list1).keys() >>> list2 [1, 2, 3, 4] 方法04: 集合方法

#集合能去除列表中重复项

#列表顺序==>改变

>>> list1 = [1,3,2,4,3] >>> set(list1) set([1, 2, 3, 4]) 方法05: 迭代工具

#用itertools的迭代工具的groupby()方法

#列表顺序==>改变

>>> import itertools >>> lst = [1, 3, 2, 4, 3] >>> lst.sort() >>> it = itertools.groupby(lst) >>> for k,g in it: print k 1 2 3 4 方法06: 索引排序

#先用集合,再用排序,注意key=list1.index,控制顺序

#列表顺序==>改变

>>> list1 = [1,3,2,4,3] >>> list2 = list(set(list1)) >>> list2.sort(key=list1.index) >>> list2 [1, 3, 2, 4]

常见对字符串反转操作:

方法01: 列表切片 >>> s = 'Hello' >>> l = list(s) >>> l[::-1] ['o', 'l', 'l', 'e', 'H'] 方法02: 常规做法 >>> def rev(s): str0 = '' l = len(s)-1 while l >=0: str0 += s[l] l -= 1 return str0 >>> s = 'A B C D' >>> rev(s) 'D C B A' 方法03: 列表反转 >>> s = 'HELLO' >>> l = list(s) >>> l.reverse() #列表reverse()方法 >>> ''.join(l) #用空字符串join列表 'OLLEH' 方法04: reduce函数 >>> def rev(s): return reduce(lambda x,y: y+x, s) #匿名函数和reduce函数结合使用 >>> s = 'AB CD' >>> rev(s) 'DC BA'小程序一: 提取两个文件中相同部分 f1 = open("1.txt","r+") f2 = open("2.txt","r+") f3 = open("3.txt","w+") all1 = f1.readlines() #先拿文件1中所有行取出 all2 = f2.readlines() #再拿文件2中所有行取出 f1.close() f2.close() for l1 in all1: for l2 in all2: if l1.strip()==l2.strip(): #比较行中内容是否一样 f3.write(l2) else: continue else: pass print "#"*40 f3.close()小程序二: 反向读取文件

假如要读取的test.txt文件内容如下:

Python
Perl
Java
Shell

file1 = file('test.txt','r') #打开文件句柄 list1 = [] #用一个空列表用于存放每行的内容 while True: line = file1.readline() #按行读取 list1.append(line.strip()) #去除字符串空格 if len(line) == 0: #如果没内容,则中断 break for l in list1[::-1]: #反向遍历,然后依次读取出来 print l file1.close() 输出结果:

Shell
Java
Perl
Python


小程序三: 对两个文本文件进行操作

要求:

1. 移除每个文件中的重复项

2. 找出两个文件中的相同项

3. 操作两个文件中的合集

4. 操作两个文件中的交集

#原始文件:文件1,文件2 f1 = file('1.txt','r') f2 = file('2.txt','r') #生成文件:文件3,文件4,文件5,文件6 f3 = file('same.txt','w+') f4 = file('union.txt','w+') f5 = file('1_diff.txt','w+') f6 = file('2_diff.txt','w+') #用空列表来存储原始文件的内容 list1 = [] #用一个空列表用于存放每行的内容 list2 = [] #用于存放文件2中的内容 1_diff = [] #用于存放文件1中的去重部分 2_diff = [] #用于存放文件2中的去重部分 #遍历两个文件 while True: line1 = f1.readline() line2 = f2.readline() if len(line1) ==0 or len(line2)==0: break else: list1.append(line1) list2.append(line2) list1_uniq = set(list1) #排除第一个文件中重复的内容 list2_uniq = set(list2) #注意应用集合排除重复的项目 same = list1_uniq & list2_uniq #取交集 union = list1_uniq | list2_uniq #取合集 #取两个集合的交集,站群软件,写入文件3中 for i in same: f3.write(i) #取两个集合的并集,写入文件4中 for i in union: f4.write(i) #取列表1中部分,与共同部分取交集 for i in list1_uniq: if not i in same: f5.write(i) #取列表2中部分,与共同部分取交集 for i in list2_uniq: if not i in same: f6.write(i) #关闭所有打开的文件句柄 f1.close() f2.close() f3.close() f4.close() f5.close() f6.close()


企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站制作 https://www.feimao666.com

上一篇:Apache 一台主机绑定多个域名及虚拟主机 下一篇:最后一页

相关阅读