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()
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'])
Python 小程序,对文件操作及其它的更多相关文章
- python 小程序大文件的拆分合并
1. 将大文件拆分为小文件 I 通过二进制的方式将大文件读取出来,将其拆分存,以不同的文件方式存放在一个目录下面 II 提供两种操作方式交互式和命令行模式 #! usr/bin/python # -* ...
- 怎么样通过编写Python小程序来统计测试脚本的关键字
怎么样通过编写Python小程序来统计测试脚本的关键字 通常自动化测试项目到了一定的程序,编写的测试代码自然就会很多,如果很早已经编写的测试脚本现在某些基础函数.业务函数需要修改,那么势必要找出那些引 ...
- Day1:第一个python小程序
Day1:第一个python小程序与开发工具Pycharm 一.Hello World C:\Users\wenxh>python Python 3.6.2 (v3.6.2:5fd33b5, J ...
- 微信小程序弹出操作菜单
微信小程序弹出操作菜单 比如在页面上放一个按钮,点击按钮弹出操作菜单,那么在按钮的 bindtap 事件里,执行下面的代码即可: wx.showActionSheet({ itemList: ['A' ...
- 图解微信小程序---调用API操作步骤
图解微信小程序---调用API操作步骤 什么是API API(Application Programming Interface,应用程序编程接口:是一些预先定义的函数,目的是提供应用程序与开发人员基 ...
- python 小兵(4)之文件操作 小问题
1.光标不对就用seek 2.文件操作方面注意不要变修改变删除,会爆出文件正在运行不能操作 3.w模式下只有开始打开的时候会清空 4.文件操作的时候用as 后面的参数进行操作,不能用文件名进行操作 5 ...
- Python基础7:文件操作
[ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
- Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数
1. 集合 1.1 特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...
随机推荐
- centos 7 修改ssh登录端口
在阿里云上面使用的oneinstack镜像,默认是使用的22端口,每次登录总会发现有人在暴力破解我的服务器,所以想想还是修改一下比较安全. 1.在防火墙打开新的端口 iptables -I INPUT ...
- ajax请求数据填充表格———使用art-template模板提高效率
一.为什么要用art-template模板 在实习的一次项目中,因为需求中展示表格的字段有很多个,后端返回的也是json数据,这时候如果还是使用之前的字符串拼接,这样会开发得比较慢,而且容易出错,而且 ...
- mybatis源码分析(5)-----拦截器的实现原理(动态代理+责任链)
写在前面 MyBatsi 的拦截器模式是基于代理的代理模式.并且myBatis 的插件开发也是以拦截器的形式集成到myBatis 当中. MyBatis 的拦截器已经插件是在org.apache.ib ...
- Android ButterKnife注解框架使用
这段时间学习了下ButterKnife注解框架,学习的不是特别深入,但是基础也差不多了,在此记录总结一下. ButterKnife是一个Android View注入的库,主要是注解的使用,可以减少很多 ...
- 关闭Spring Boot的Jsckson的FAIL_ON_EMPTY_BEANS
说明:Spring Boot中默认使用了Jackson做JSON的解析. 解决方法: 1.通过注入Bean来实现 错误: org.springframework.http.converter.Http ...
- Delphi 的插件框架 WisdomPluginFramework
WisdomPluginFramework是融合OSGI微内核理念 + Eclipse的扩展点概念而精心设计的轻量级插件框架, 由Delphi实现,但可以使用于Delphi.BCB.VC++中,提供非 ...
- 更改CentOS 6.3 yum源为国内 阿里云源
将CentOS的 yum源 更换为 阿里云源 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.b ...
- 进程上下文VS中断上下文
转载:http://www.cnblogs.com/zzx1045917067/archive/2012/12/19/2824552.html 内核空间和用户空间是现代操作系统的两种工作模式,内核模块 ...
- set是无序集合,放入set中的元素通过iterator输出时候是无序的
set是无序集合,放入set中的元素通过iterator输出时候是无序的 HashMap<String , String> hashMap = new HashMap<String ...
- infor系统日常问题解决笔记
1.问题:结算单核准时候显示订单XXX的状态为已修改. 解决方法:在采购订单状态栏重新核准订单,采购订单状态不影响发票核准,结算后不允许再新增采购订单行,否则仍然会提示采购订单状态为已修改,且无法进行 ...