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——文件处理相关推荐

  1. python 文件处理软件_Python —— 文件处理

    1.文件操作分为读.写.修改 两种方式读写文件: 方法1: 1 f = open(file = '路径', mode = 'r', encoding = 'utf-8')2 data =f.read( ...

  2. java文件恢复软件,文件恢复软件 免费-文件恢复软件 免费版

    文件恢复软件 免费 文件恢复软件是一款功能丰富的文件恢复软件,文件恢复软件可以恢复那些被删除的文件,即使是回收站清空的文件也能恢复,不管是文档.图片.视频还是压缩包,都能重新找回来,有需要的朋友可以来 ...

  3. python开发cs软件_python cs架构实现简单文件传输

    本文为大家分享了python cs架构实现简单文件的传输代码,供大家参考,具体内容如下 要实现简单文件的传输我们必须考虑这些问题: 1.什么是c/s架构? 顾名思义,就是客户端端/服务器架构.不同的人 ...

  4. python文件去重软件_Python实现的txt文件去重功能示例

    本文实例讲述了Python实现的txt文件去重功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python2 import shutil a=0 readD ...

  5. python后缀是什么_python文件的后缀名是什么

    python文件的后缀名有:".py".".py3".".pyc".".pyo".".pyd".&q ...

  6. python文本处理实例_Python 文件处理的简单示例

    这篇文章主要为大家详细介绍了Python 文件处理的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 相关的AP ...

  7. python创建文件夹命令_python文件操作指令

    原文地址:http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html 常用的文件操作指令: python中对文件.文件夹(文件操 ...

  8. python输入输出简单例子_Python 文件和流的简单示例

    这篇文章主要为大家详细介绍了Python 文件和流的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 1.打开文 ...

  9. python一键取消注释_Python文件去除注释的方法

    本文实例讲述了Python文件去除注释的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # -*- coding: GBK -*- #writer:xmnathan ...

最新文章

  1. sqlserver 行转列
  2. Eclipse 之 EasyExplore 插件
  3. macpro如何清理磁盘空间_如何正确的清理C盘
  4. 在电脑上安装Linux操作系统(ubuntu)
  5. Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明
  6. oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换
  7. 算法题目——Problem A 二进制(北邮机试)
  8. c++编程规范101条规则
  9. UAT测试,怎么做最有效
  10. 100套计算机毕设源码+论文 免费分享 【2020最新版】
  11. html语言 搜索引擎关键词 怎么写,HTML关键词
  12. 2020-05-11
  13. 【服务端知识点】MAC OSX 安装MongoDB
  14. 推荐系统实战 --- 基于音乐播放推荐
  15. 2012-2013年世界大学计算机专业排名
  16. qt错误:常量中有换行符
  17. 机器学习数据划分笔记(train_test_split)
  18. Python3基础练习
  19. VsCode插件之vscode-icons
  20. 盐酸除铁方法 盐酸除铁树脂 盐酸里面的铁怎么去除

热门文章

  1. Docker: network nat is ambigous
  2. 阿里大于短信服务API Demo及使用说明
  3. 关于MySQL数据库当中,字段(或栏位)采用中文命名时的掉坑经历
  4. 2021年中国3D打印面罩市场趋势报告、技术动态创新及2027年市场预测
  5. 哈尔滨市科学技术局领导莅临开源网安参观交流
  6. 主题单元评价量规用计算机画画,巧用评价量规引领课堂教学
  7. 小米5 Android7.0 ROOT教程
  8. js 实现 H5 div的内容 放大缩小拖拽功能 vue可用
  9. execution_character_set报warning: unknown pragma ignored
  10. title,description,keywords有什么价值?