Python 小程序,对文件操作及其他
来源:互联网 发布:hadoop大数据平台架构 编辑:程序博客网 时间:2024/05/16 01:30
下面是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等。比如说,从文件中读取一行数据,分别存放于列表中,再对列表进行操作,如去掉里面的重复项,排序等操作。
常见对文件中行进行操作:
#这里列出两个常用的方法
- 方法01: 一次性读取所有行
>>> f = file('1.txt')>>> while 1:lines = f.readlines()if not lines:breakfor line in lines:print line
- 方法02: 一行行读取
>>> f = file('1.txt')>>> while f:line = f.readline()if len(line) == 0:breakelse: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 k1234
- 方法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)-1while l >=0:str0 += s[l]l -= 1return 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: continueelse: pass print "#"*40f3.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 lfile1.close()输出结果:
Shell
Java
Perl
Python
小程序三: 对两个文本文件进行操作
要求:
1. 移除每个文件中的重复项
2. 找出两个文件中的相同项
3. 操作两个文件中的合集
4. 操作两个文件中的交集
#原始文件:文件1,文件2f1 = file('1.txt','r')f2 = file('2.txt','r')#生成文件:文件3,文件4,文件5,文件6f3 = 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()
NOTE:也可以用X-Y来求两个集合的差集
>>> X = set('spam')
>>> Y = set(['h','a','m'])
>>> X,Y
(set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))
>>> X - Y
set(['p', 's'])
4 0
- Python 小程序,对文件操作及其他
- python对xml文件操作小例程
- Python的几个文件操作小程序
- MAT文件打开方法汇总及其他操作
- 【Python 学习手册笔记】元组、文件及其他
- Python核心数据类型——元祖、文件及其他
- python 合并文件小程序
- python文件操作小总结
- python对文件的操作
- python 对文件的操作
- python对文件的操作
- python对文件的操作
- Python对文件的操作
- python对文件的操作
- Visual C# 操作 Excel 文件(四) 存檔及其他操作
- 【Python】Python对文件的读写操作
- 使用Visual Studio生成安装程序并设定连接字符串及其他自定义操作.
- 使用Python程序对MySQL进行操作
- 数据结构之队列11循环队列定义及实现
- 【Sublime】Pretty JSON插件安装与配置
- 一些有用的链接
- 关于svn连接报错“Unable to connect to a repository at URL .......”
- linux 本地通信实例 AF_UNIX close (sockfd)很重要
- Python 小程序,对文件操作及其他
- 数据结构之队列12阵列队列
- 1.10 双线程高效下载
- QT中PRO文件写法的详细介绍,很有用,很重要! .
- 加州理工学院公开课:机器学习与数据挖掘_神经网络(第十课)
- php函数
- 网站自动登录功能的设计
- HDU 2089【数位DP】
- Effective C++ 34