在python中对文件操作的一般步骤是_文件操作(一) 笔记------python
一.文本文件和二进制文件
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相关推荐
- python中字典的value可以为任意对象_手把手教你学Python之字典
字典是一种无序可变的容器,字典中的元素都是"键(key):值(value)"对, "键"和"值"之间用冒号隔开,所有"键值对&qu ...
- 在python中、关于全局变量和局部变量、以下_关于全局变量和局部变量-Python
练习: No.1 num = 100 def func(): num = 123 print(num) func() 先 想 一 下 : 输出: 123 解析: 函数内部的变量名,如果第一次出现,且出 ...
- python中输出n开始的5个奇数_送你99道Python经典练习题,练完直接上手做项目,免费送了来拿吧...
学python没练习题怎么行.今天,给大家准备一个项目: 99道编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目已经获得了 2924 S ...
- 如何用Python中Tushare包轻松完成股票筛选(详细流程操作)
如何用Python中Tushare包轻松完成股票筛选(详细流程操作) 本文包括安装以及调用Tushare包的详细流程操作 一.Tushare简介 Tushare是Python中一个十分好用的免费调用股 ...
- python中表示单一数据的类型被称为_各种Python数据类型的完整列表
各种Python数据类型的完整列表 如今,Python是最受欢迎的编程语言之一.它允许开发人员将所有精力都放在实现上,而不是将复杂的程序和python中的数据类型用于此目的只是为了简化我们的工作. P ...
- 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中的列表. 我使用这种语法: ...
- python中读写excel的扩展库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...
常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...
- 字符编码在python中的处理与储存_python----字符编码与文件处理
字符编码 计算机工作就要通电,也就是说'电'驱使计算机干活,而电只有高电压(二进制1),低电压(二进制0),也就是说计算机只认数字. 编程的目的就是让计算机干活,编程的结果就是一堆字符,也就是我们编程 ...
- python中定义一个空的字符串_04python—15种字符串操作
<python小白入门系列教程> 专栏 • 第04篇 字符串是 字符的序列 .字符串基本上就是一组单词.我几乎可以保证你在每个Python程序中都要用到字符串,所以请特别留心下面这部分的内 ...
- python读取多行json_如何在Python中读取包含多个JSON对象的JSON文件?
所以这是在python中读取JSON文件的标准方法 import json from pprint import pprint with open('ig001.json') as data_file ...
最新文章
- C和C++安全编码笔记:并发
- 重置表单验证 清除表单校验信息
- git常见的回退操作
- 编写一程序,有2个文本框,在第一个文本框中输入一个整数,当焦点从第一个文本框离开时,第二个文本框将显示这个数的绝对值(使用FocusListener)。
- 卓同学的 Swift 面试题
- 无线网络拓扑结构简析
- SDNLAB技术分享(二):从Toaster示例初探ODL MD-SAL架构
- unity找到特定一个物体的子物体,多个子物体有相同的名称
- python窗体生成器_python 如何生成窗体
- python 时间序列异常值_干货 :时间序列异常检测
- 20种简单美化照片PS技术
- 单片机实验-数据传送
- 多亏了这几款软件,我才能坚持写博客这么多年!
- 老师教我们用计算机画画就是彩虹,汉语拼音的教案
- 操作系统 --- 磁盘调度算法
- 由DatePicket和TimePicker扩展延伸其他控件
- 医美“非标化”埋雷 新氧科技流量变现受制约
- Day212.OAuth2、微信二维码登入注册功能、用户登录信息前后端供、讲师列表前后端 -谷粒学院
- 什么是运营商大数据?您了解么?
- 从零学习 InfiniBand-network架构(九) —— IB协议中子网本地地址