python 文件处理软件_Python——文件处理
1、文件
存储在外部介质上的数据或信息的集合 。程序中的源程序、数据中保存着数据、图像中的像素数据
有序的数据序列。
2、编码
信息从一种形式转换为另一种形式的过程。ASCII码、Unicode、UTF-8
(1)ASCII码
ASCII码是标准化字符集,7个二进制位编码,表示128个字符
可以看出,字符和数字之间一一对应,还有,字符串需要用引号。
(2)Unicode
跨语言、 跨平台进行文本转换和处理。对每种语言中字符设定统一且唯一的二进制编码,每个字符两个字节长
65536 个字符的编码空间
“严” :Unicode的十六进制数为4E25
(3)UTF-8编码可变长度的Unicode的实现方式
“严” :十六进制数为E4B8A5
(4)GBK编码
双字节编码
2、文件数据
文本文件:以ASCII码方式存储的文件…
二进制文件
(1)文本文件
以ASCII码方式存储的文件…
(2)二进制文件ASCII码
照片、 音乐、 视频、 计算机程序等
优点:更加节省空间、采用二进制无格式存储、表示更为精确
3、文件基本处理
(1)写入
Open()
= open (, )
磁盘文件名
打开模式
1 defmain():2 fname=input("enter filename:")3 infile=open(fname,'r')4 data=infile.read()5 print(data)6 main()
1 defmain():2 fname=input("enter filename:")3 infile=open(fname,'r')4 for i in range(5):5 line=infile.readline()6 print(line)7 defRead():8 fname=input("enter filename:")9 infile=open(fname,'r')10 for n in range(5):11 line=infile.readline()12 print(line[:-1])13 main()14 Read()
以上两段程序是将文件按行输出,后一段是去掉了最后的换行符,得以没有行间隔。
(2)写入
从计算机内存向文件写入数据
write():把含有本文数据或二进制数据块的字符串写入文件中。
writelines():针对列表操作,接受一个字符串列表作为参数,将它们写入文件。
1 defmain():2 filename=input("enter the file's name:")3 outfile=open(filename,'w')4 outfile.writelines(['hello','\n','world'])5 outfile.close()6 infile=open(filename,'r')7 data=infile.read()8 print(data)9
10 main()
(3)文件遍历
最常见的文件处理方法
举例:拷贝文件、根据数据文件定义行走路径、将文件由一种编码转换为另外一种编码 通用代码框架:
通用代码框架:
file = open (someFile, "r")
For line in file.readlines():#处理一行文件内容
file.close()
简化代码框架:file = open (someFile, "r")
For line in file#处理一行文件内容
file.close()
1 defmain():2
3 f1=input("enter a souce file:")4 f2=input("enter a souce file:")5
6 infile=open(f1,'r')7 outfile=open(f2,"w")8
9 countlines=countchars=010 for line ininfile:11 countlines+=1
12 countchars+=len(line)13 outfile.write(line)14 print(countlines,'lines and',countchars,'chars copied')15
16 infile.close()17 outfile.close()18 main()19
20
21
注意:write()是用来写入字符串的,writelines()可以用来写入数组。
4、实例
(1)append函数
1 defmain():2 file=open("data.txt",'r')3 s=[]4 for line infile:5 s.append(line)6 print(s)7 print(len(s))8 print("\n",s[-1])9 print(s[-1][0])10 main()
可以看得出,列表s有4个部分,每部分由一组字符串构成。
(2) map()函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
例如,对于list [1, 2, 3]
如果希望把list的每个元素都作平方,就可以用map()函数:
因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:
1 deff(x):2 return x*x3 b=[1,2,3]4 print(list(map(f,b)))
map()类似函数映射,list由于python版本问题,需要用list显示出来。
(3)动态画图
1 importturtle2
3 defmain():4 turtle.title("数据驱动的动态路径绘制")5 turtle.setup(800,600,0,0) #画布大小800*600像素,(0,0)画笔中心点
6
7 pen=turtle.Turtle()#创建画笔
8 pen.color('red')9 pen.width(5)10 pen.shape("turtle")#形状
11 pen.speed(5)12
13 result=[]14 file=open("data.txt",'r')15 for line infile:16 result.append(list(map(float,line.split(","))))#逗号隔开,形成列表,map()用来转换格式
17 print(result)18
19 for i inrange(len(result)):20 pen.color(result[i][3],result[i][4],result[i][5])21 pen.forward(result[i][0])22 if result[i][1]: #如果这个数是1,向右转
23 pen.rt(result[i][2])24 else:25 pen.lt(result[i][2])#0的话,向左转
26 pen.goto(0,0)27
28 main()29
30
4、文件合并
将以上TXT文件合并
(1)
1 defmain():2 ftele1=open('tel.txt','r')3 ftele2=open('email.txt','r')4
5 ftele1.readline() #跳过第一行,标题栏
6 ftele2.readline()7 lines1 =ftele1.readlines()8 lines2 =ftele2.readlines()9
10 list1_name = [] #每一列的内容单独摘出来
11 list1_tele =[]12 list2_name =[]13 list2_email =[]14
15 for line in lines1:#获取第一个文本中的姓名和电话信息
16 elements=line.split() #列表类型
17 list1_name.append(str(elements[0]))18 list1_tele.append(str(elements[1]))19 print(elements) #空格分开后的列表
20 print('\n',list1_name)#名字列表
21 print(list1_tele,'\n')#电话列表
22
23 for line in lines2:#获取第二个文本中的姓名和邮箱信息
24 elements=line.split() #列表类型
25 list2_name.append(str(elements[0]))26 list2_email.append(str(elements[1]))27 print(elements) #空格分开后的列表
28 print("\n",list2_name)#名字列表
29 print(list2_email,'\n')#电话列表
30
31 lines=[]32 lines.append("姓名\t 电话\t 邮箱\n")33 print(lines)34
35 for i inrange(len(list1_name)):36 s=''
37 if list1_name[i] inlist2_name:38 j=list2_name.index(list1_name[i])#表2中与表1中名字对应的位置索引
39 s='\t'.join([list1_name[i],list1_tele[i],list2_email[j]])#'\t'插入到三个元素中间
40 s+='\n'
41 else:42 s = '\t'.join([list1_name[i], list1_tele[i], str('-----')])43 s += '\n'
44 print('\n',s)45 lines.append(s)46
47
48 for i inrange(len(list2_name)):49 s=''
50 if list2_name[i] not inlist1_name:51 s='\t'.join([list2_name[i],str("---"),list2_email[i]])52 s+='\n'
53 print(s)54 lines.append(s)55 print(lines)56
57 ftele3=open('book.txt','w')58 ftele3.writelines(lines)59 ftele3.close()60 ftele1.close()61 ftele2.close()62 print('ok')63
64 main()
对齐功能还没有实现。
1 defmain():2
3 file1=open("tel.txt",'r')4 file2=open("email.txt",'r')5
6 file1.readline() #第一行内容
7 file2.readline()8
9 file1_name=[]10 file1_tel=[]11 file2_name=[]12 file2_email=[]13
14 lines1=file1.readlines()#余下的内容
15 lines2=file2.readlines()16
17 for line inlines1:18 elements=line.split()#列表类型
19 file1_name.append(elements[0])#增加和替换的区别,一步一步加
20 file1_tel.append(elements[1])#列变行
21
22 for line inlines2:23 elements=line.split()24 file2_name.append(elements[0])25 file2_email.append(elements[1])26 print(file2_name)27
28 lines=[]#创建新的列表
29 lines.append("姓名\t电话\t 邮箱\n")#增加了一个字符串
30
31 for i in range(len(file1_name)):#用下标是为了可以表示出电话
32 s=''#抽取元素,构成新的一行字符串,(每行是否可以换成列表?)
33 if file1_name[i] infile2_name:34 j=file2_name.index(file1_name[i])35 s="\t".join([file1_name[i],file1_tel[i],file2_email[j]])36 s+='\n' #换行
37 else:38 s="\t".join([file1_name[i],file1_tel[i],"---"])39 #s.append('\n')#字符串不可以用append()
40 s+='\n'
41 lines.append(s)42 print(lines)43
44 for i inrange(len(file2_name)):45 s=''
46 if file2_name[i] not infile1_name:47 s='\t'.join([file2_name[i],"---",file2_email[i]])#将一个列表结合成一个字符串
48 s+='\n'
49 lines.append(s)50 print(lines)51
52 file3=open("text.txt","w")53 file3.writelines(lines) #write()只能用字符串,writelines()用于列表
54 file3.close()55 file1.close()56 file2.close()57
58 main()
1 #利用字符串和列表将两个通讯录文本合并为一个文本2 def main():3 ftele1=open('tel.txt','rb')4 ftele2=open('email.txt','rb')5
6 ftele1.readline() #跳过第一行7 ftele2.readline()8 lines1 =ftele1.readlines()9 lines2 =ftele2.readlines()10
11 list1_name =[] #每一列的内容单独摘出来12 list1_tele =[]13 list2_name =[]14 list2_email =[]15
16 for line inlines1:#获取第一个文本中的姓名和电话信息17 elements =line.split()#将一个字符串分裂成多个字符串组成的列表。18 list1_name.append(str(elements[0].decode('gbk')))19 list1_tele.append(str(elements[1].decode('gbk'))) #将文本读出来的bytes转换为str类型20
21 for line inlines2:#获取第二个文本中的姓名和邮件信息22 elements =line.split()23 list2_name.append(str(elements[0].decode('gbk')))24 list2_email.append(str(elements[1].decode('gbk')))25
26 ###开始处理###27 lines =[]28 lines.append('姓名\t 电话 \t 邮箱\n')29
30 #按索引方式遍历姓名列表131 for i inrange(len(list1_name)):32 s= ''
33 if list1_name[i] inlist2_name:34 j =list2_name.index(list1_name[i]) #找到姓名列表1对应列表2中的姓名索引位置35 s = '\t'.join([list1_name[i], list1_tele[i], list2_email[j]])36 s += '\n'
37 else:38 s = '\t'.join([list1_name[i], list1_tele[i], str('-----')])39 s += '\n'
40 lines.append(s)41
42 #处理姓名列表2中剩余的姓名43 for i inrange(len(list2_name)):44 s= ''
45 if list2_name[i] not inlist1_name:46 s = '\t'.join([list2_name[i], str('-----'), list2_email[i]])47 s += '\n'
48 lines.append(s)49
50 ftele3 = open('AddressBook.txt', 'w')51 ftele3.writelines(lines)52 ftele3.close()53 ftele1.close()54 ftele2.close()55
56 print("The addressBooks are merged!")57
58
59 main()
思路:
读取两个文件——以行为循环,通过split()函数,拆分行 ,将名字,电话,邮箱用append()函数添加到新建的列表中——新建一个列表,append语句添加表头——用for循环 if语句判断两个名字是否相同,以下标为索引,通过join()函数将名字,电话,邮箱连成一个字符串,加入到新的列表中——将新列表写入新的文件——实现功能
python 文件处理软件_Python——文件处理相关推荐
- python 文件处理软件_Python —— 文件处理
1.文件操作分为读.写.修改 两种方式读写文件: 方法1: 1 f = open(file = '路径', mode = 'r', encoding = 'utf-8')2 data =f.read( ...
- java文件恢复软件,文件恢复软件 免费-文件恢复软件 免费版
文件恢复软件 免费 文件恢复软件是一款功能丰富的文件恢复软件,文件恢复软件可以恢复那些被删除的文件,即使是回收站清空的文件也能恢复,不管是文档.图片.视频还是压缩包,都能重新找回来,有需要的朋友可以来 ...
- python开发cs软件_python cs架构实现简单文件传输
本文为大家分享了python cs架构实现简单文件的传输代码,供大家参考,具体内容如下 要实现简单文件的传输我们必须考虑这些问题: 1.什么是c/s架构? 顾名思义,就是客户端端/服务器架构.不同的人 ...
- python文件去重软件_Python实现的txt文件去重功能示例
本文实例讲述了Python实现的txt文件去重功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python2 import shutil a=0 readD ...
- python后缀是什么_python文件的后缀名是什么
python文件的后缀名有:".py".".py3".".pyc".".pyo".".pyd".&q ...
- python文本处理实例_Python 文件处理的简单示例
这篇文章主要为大家详细介绍了Python 文件处理的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 相关的AP ...
- python创建文件夹命令_python文件操作指令
原文地址:http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html 常用的文件操作指令: python中对文件.文件夹(文件操 ...
- python输入输出简单例子_Python 文件和流的简单示例
这篇文章主要为大家详细介绍了Python 文件和流的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 1.打开文 ...
- python一键取消注释_Python文件去除注释的方法
本文实例讲述了Python文件去除注释的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # -*- coding: GBK -*- #writer:xmnathan ...
最新文章
- sqlserver 行转列
- Eclipse 之 EasyExplore 插件
- macpro如何清理磁盘空间_如何正确的清理C盘
- 在电脑上安装Linux操作系统(ubuntu)
- Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明
- oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换
- 算法题目——Problem A 二进制(北邮机试)
- c++编程规范101条规则
- UAT测试,怎么做最有效
- 100套计算机毕设源码+论文 免费分享 【2020最新版】
- html语言 搜索引擎关键词 怎么写,HTML关键词
- 2020-05-11
- 【服务端知识点】MAC OSX 安装MongoDB
- 推荐系统实战 --- 基于音乐播放推荐
- 2012-2013年世界大学计算机专业排名
- qt错误:常量中有换行符
- 机器学习数据划分笔记(train_test_split)
- Python3基础练习
- VsCode插件之vscode-icons
- 盐酸除铁方法 盐酸除铁树脂 盐酸里面的铁怎么去除
热门文章
- Docker: network nat is ambigous
- 阿里大于短信服务API Demo及使用说明
- 关于MySQL数据库当中,字段(或栏位)采用中文命名时的掉坑经历
- 2021年中国3D打印面罩市场趋势报告、技术动态创新及2027年市场预测
- 哈尔滨市科学技术局领导莅临开源网安参观交流
- 主题单元评价量规用计算机画画,巧用评价量规引领课堂教学
- 小米5 Android7.0 ROOT教程
- js 实现 H5 div的内容 放大缩小拖拽功能 vue可用
- execution_character_set报warning: unknown pragma ignored
- title,description,keywords有什么价值?