一.文本文件和二进制文件

1)文本文件:存储普通的‘字符’文本,默认为unicode字符集(两个字节表示一个字符,最多表示65536个)

2)二进制文件:把数据内容用“字节”进行存储。

*在创建时,如果我们没有增加模式“b”,则默认创建的是文本文件对象,处理基本单元是”字符“。

二.文件操作模块:

io模块-------文件流的输入和输出操作   input  output

os模块-------基本操作系统功能,包括文件操作

glob模块------查找符合特定规定的文件路径

fumatch模块--------使用模式来匹配文件路径名

fileinput模块--------处理多个输入文件

filecmp模块---------用于处理文件的比较

csv模块----------用于csv文件处理

pickle和CPickle-------用于序列化和反序列化

xml包---------用于XML数据处理

bz2,gzip,zipfile,zlib,tarfile-------用于处理压缩文件和解压缩文件(分别对于不同的算法)

三.创建文件对象 open()

1.基本语法格式:open(文件名[,打开方式])

如果只有文件名------表示在当前目录下的文件(文件名可以录入全路径)示例:f=open(r"d:\b.txt","a")     ==>等同于f=open("D:\a\b.txt","a")

2.判断文件名是否存在语法:import os  #使用此操作之前必须先调用模块os

if os.path.isfile(文件名):

3.文件路径

1)相对路径:

从当前文件所在的文件夹开始的路径

【文件名.txt】和【./文件名.txt】都是从当前文件夹寻找 【文件名.txt】。

【../文件名.txt】从文件夹的上一级文件夹里查找  【文件名.txt】。

【文件名1/文件名.txt】,在当前文件夹里查找"文件名1"这个文件夹,并在里面查找"文件名.txt".

2)绝对路径:

是指绝对位置,完整地描述了目标所在地,以及文件目录层级关系。

*打开文件的模式(mode):默认rt,以文本模式打开,只读

r-----读模式

w------写模式,如果文件不存在则创建;存在则重写新内容。

a------追加模式,如果文件不存在则创建;如果文件存在则在文件末尾处追加内容。

b------二进制模式(可与其他模式组合使用)

rb------以二进制格式打卡一个文件,用于只读(wb只写,ab用于追加,)。

t-------文本形式打卡

+-------读、写模式(可与其他模式组合使用)

r+-------打开一个文件用于读写,文件指针在文件开头(w+ 覆盖原文件,不存在时创建文件;a+ 文件指针放在文件结尾,不存在时,创建后用于读写;rb+文件指针在文件开头,wb+、ab+、)

U------通用换行符支持

四.文件对象方法

*file.close()------关闭文件

*file.read(x)------从文件中读取x个字符,当未给定x或者给定负值时,读取剩余的所有字符,然后作为字符串返回。

*file.readline()-----以写入模式打开,如果文件存在,则在末尾追加写入

*file.wrinte()-----将字符串写入文件

*file.wrintelines()-----向文件写入字符串序列seq,seq应该时一个返回字符串的可迭代对象

*file.seek(offset,from)------在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offiset个字节。

*file.tell()------返回当前文件的位置

五.常用编码   encoding:用指文件的编码方式

1.语法:file=open('文件名','w',encoding='utf8')

2.编码:

window默认GBK,linux默认UTF-8

ASCII------7位表示,只能表示128(2**7)个字符。

ISO8859-1-----8为表示一个字符,能表示256个字符,兼容ASCII

GB2312,GBK,GB18030-------兼容ISO,英文1一个字符,汉字两个字符

Unicode--------定长编码,2个字节表示一个字符,与ISO不兼容

UTF-8---------变长编码,1-4个字节表示一个字符,英文1个字节,汉字3个字节,兼容ISO

3.转码

在文件以二进制读取的时候,使用encode('utf8')转回汉字

*一般使用二进制读取,同样使用二进制写入,并不必使用这种方式*'你'.encode('utf8')----->b'\xe4\xbd\xa0'    #你这个字的二进制形式

语法:file=open('sss.txt','rb')

print(file.encode('utf8'))

六.关闭文件 close()

一般在文件进行操作之后都要关闭语法:file.close()

七.文件写入数据 write()

1.步骤:

创建文件对象--->写入数据write()--->关闭文件对象close()

*先打开文件,再进行写入。*

*在进行写入操作时,打开文件要以 'w'等相关方式打开*

2.使用write()可以向文件写入数据。语法:file.write('数据')#write输入的数据必须时字符串而非其他数据类型

3.写入规则:

1)如果文件不存在,先创建,如果文件存在则先清空,后写入数据。

2)*write时,只能写入字符串或二进制,列表、字典、数字都不能之间写入文件。*

3)将数据转成字符串:repr/str, 或者使用json模块

4)将数据转成二进制:使用pickle模块

八.文件读取数据(read)

1.步骤:

同文件打开操作相同,*先打开文件,再进行读取。*

2.使用read()可以从文件中读取数据语法1:file.read(num)#将所有数据都读取出来 ,这里的num是指读取的长度,不写时默认为-1

#从文件读取num个字符,当为给定num或给定负值的时候,读取剩余的所有字符,然后作为字符串返回。

语法2:file.readline()#只读取一行

语法3:file.readlines()#读取所有数据,保存到一个列表中,有几行保存成几个元素(在列表)

注意:             *.在下次调用读操作时一般是从上次读取的位置继续读取

*.在对文件进行读操作时,要在打开文件操作上转换“r”等相关的方式。

十.文件拷贝

1.思想:

先打开被拷贝文件--->以读'w'的方式打开新文件--->读取被拷贝文件--->将内容写入新文件--->关闭所有文件

2.文件备份

思想:先生成备份文件名----->将文件中内容拷贝到备份文件中语法:name=file_name.rpartition('.') #会将文件以从右边数第一个点分成三个'xxx.txt'--->'xxx','.','txt'

new_file_name=name[0]+'.bak.'+name[2]#结果为'xxx.bak.txt'

语法2:os.path.splitext(文件名)  #使用此模块之前必须先调用os模块(import os)会将文件从右数第一个点分成两段  'xxx.txt'------>'xxx','.txt'

new_file_name=name[0]+'.bak'+name[1]#结果为'xxx.bak.txt'

十一.指针定位 tell()    seek()

1.tell()方法用来显示当前指针的位置语法:file.tell()

2.seek(offset,whence)方法用来重新设定指针的位置。

·offset表示偏移量

·whence表示只能传入0、1、2中的一个数字。

0:表示从文件头开始

1:表示从当前位置开始

2:表示从文件的末尾开始

十二.csv文件的读写

1.csv文件(又叫逗号分隔值或字符分隔值)

1)概念:

其文件以纯文本的形式存储表格数据,单元格之间默认使用逗号分隔,每行数据之间使用换行进行分隔。

2.文件写入

1)需要先调用csv模块语法: import csv

2)打开文件语法:file=open('文件名','w',newline=' ')   #以写的方式打开,newline=' ' 是将两行数据之间得空行删除。

3)writer方法语法:writer=csv.writer(file) #传入一个csv文件对象,得到一个CSVWriter对象

4)witerow方法语法:writer.writerow([数据列表]) #调用CSVWriter对象的writerow方法,实现一行行的写入数据。数据以列表的形式写入。

5)writerows方法语法:writer.writerows([数据列表],[数据列表],......)#写入几行数据用几个列表,中间以逗号间隔,列表中要元素为字符串型。

3.文件读取

*与csv文件的写操作一样,都需要调用csv模块,然后打开文件,最后关闭文件。语法:变量名A=csv.reader(file)     #调用csv模块的reader方法,得到一个可迭代对象A,可对其进行遍历得到每行数据(*这里的变量名是指使用变量命名格则来命名,A实质上是一个可迭代对象。*)

for row in A:

print(row)

十三.将数据写入内存(StringIO类,BytesIO类)

1.StringIO类语法:form io import StringIO #导入StringIO类

变量A=StringIO()

A.write(数据内容)  #将数据内容写入到内存

print(A.getvalue())   #读取内存中写入的数据内容

A.close()  #使用完后要记得关闭语法2:print('数据内容',file=open('文件名','w'))语法3:form io import StringIO #导入StringIO类

变量A=StringIO()

print('数据内容',file=A)  #将数据内容写入到内存

print(A.getvalue()) #读取内存中写入的数据内容

*写入到内存的数据内容在程序运行结束后,自动销毁*

2.BytesIO类

使用格式与StringIO一样,但BytesIO是二进制写入内存,当写入为中文是,要使用encounde('utf8'),在读取时也是二进制读取,可以使用decode('utf8')进行解码。for io import BytesIO

b_io=BytesIO()

b_io.write('你好'.encode('utf8'))

print(b_io.getvalue().decode('utf8'))

3.两个类可以同时导入

for io import (StringIO,BytesIO)

在python中对文件操作的一般步骤是_文件操作(一) 笔记------python相关推荐

  1. python中字典的value可以为任意对象_手把手教你学Python之字典

    字典是一种无序可变的容器,字典中的元素都是"键(key):值(value)"对, "键"和"值"之间用冒号隔开,所有"键值对&qu ...

  2. 在python中、关于全局变量和局部变量、以下_关于全局变量和局部变量-Python

    练习: No.1 num = 100 def func(): num = 123 print(num) func() 先 想 一 下 : 输出: 123 解析: 函数内部的变量名,如果第一次出现,且出 ...

  3. python中输出n开始的5个奇数_送你99道Python经典练习题,练完直接上手做项目,免费送了来拿吧...

    学python没练习题怎么行.今天,给大家准备一个项目: 99道编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目已经获得了 2924 S ...

  4. 如何用Python中Tushare包轻松完成股票筛选(详细流程操作)

    如何用Python中Tushare包轻松完成股票筛选(详细流程操作) 本文包括安装以及调用Tushare包的详细流程操作 一.Tushare简介 Tushare是Python中一个十分好用的免费调用股 ...

  5. python中表示单一数据的类型被称为_各种Python数据类型的完整列表

    各种Python数据类型的完整列表 如今,Python是最受欢迎的编程语言之一.它允许开发人员将所有精力都放在实现上,而不是将复杂的程序和python中的数据类型用于此目的只是为了简化我们的工作. P ...

  6. python set转为list_如何将一个集合转换成python中的列表?(How to convert a set to a list in python?)...

    如何将一个集合转换成python中的列表?(How to convert a set to a list in python?) 我试图将一个集合转换为Python 2.6中的列表. 我使用这种语法: ...

  7. python中读写excel的扩展库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...

    常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...

  8. 字符编码在python中的处理与储存_python----字符编码与文件处理

    字符编码 计算机工作就要通电,也就是说'电'驱使计算机干活,而电只有高电压(二进制1),低电压(二进制0),也就是说计算机只认数字. 编程的目的就是让计算机干活,编程的结果就是一堆字符,也就是我们编程 ...

  9. python中定义一个空的字符串_04python—15种字符串操作

    <python小白入门系列教程> 专栏 • 第04篇 字符串是 字符的序列 .字符串基本上就是一组单词.我几乎可以保证你在每个Python程序中都要用到字符串,所以请特别留心下面这部分的内 ...

  10. python读取多行json_如何在Python中读取包含多个JSON对象的JSON文件?

    所以这是在python中读取JSON文件的标准方法 import json from pprint import pprint with open('ig001.json') as data_file ...

最新文章

  1. C和C++安全编码笔记:并发
  2. 重置表单验证 清除表单校验信息
  3. git常见的回退操作
  4. 编写一程序,有2个文本框,在第一个文本框中输入一个整数,当焦点从第一个文本框离开时,第二个文本框将显示这个数的绝对值(使用FocusListener)。
  5. 卓同学的 Swift 面试题
  6. 无线网络拓扑结构简析
  7. SDNLAB技术分享(二):从Toaster示例初探ODL MD-SAL架构
  8. unity找到特定一个物体的子物体,多个子物体有相同的名称
  9. python窗体生成器_python 如何生成窗体
  10. python 时间序列异常值_干货 :时间序列异常检测
  11. 20种简单美化照片PS技术
  12. 单片机实验-数据传送
  13. 多亏了这几款软件,我才能坚持写博客这么多年!
  14. 老师教我们用计算机画画就是彩虹,汉语拼音的教案
  15. 操作系统 --- 磁盘调度算法
  16. 由DatePicket和TimePicker扩展延伸其他控件
  17. 医美“非标化”埋雷 新氧科技流量变现受制约
  18. Day212.OAuth2、微信二维码登入注册功能、用户登录信息前后端供、讲师列表前后端 -谷粒学院
  19. 什么是运营商大数据?您了解么?
  20. 从零学习 InfiniBand-network架构(九) —— IB协议中子网本地地址

热门文章

  1. 某大型电商云平台实践
  2. AgileEAS.NET平台开发实例-药店系统-视频教程系列-索引
  3. HIPS软件的一些知识
  4. mysql慢查询优化
  5. 【PHP基础】PHP接口调用与json数据处理
  6. day20: zip压缩工具及打包工具介绍
  7. Hbuilder问题记录
  8. Linux中tshark(wireshark)抓包工具使用方法详解
  9. HTML5标签canvas制作动画
  10. centos 安装gcc