文本文件的操作步骤:
1、打开文件
函数格式:open(file,mode,buffering,encoding) (文件的绝对路径,打开模式,缓冲,编码方式)
返回值:返回一个文件对象,用来对文件进行操作。说明:该函数主要是进行文件打开操作,如果文件不存在就新建一个文件。如果存在就打开原有文件。
try:
f1=open('a1.txt','w',100,encoding='utf-8')
f1.write('写入文件的内容')
except FileExistsError as ex:
print('文件不存在')
finally:
f1.close()
with…as语句的目的在于从流程图中把try、except、finally关键字和资源分配释放相关代码全部去掉,而不是像try…except…finally那样仅仅简化代码使之易于使用。with语句的语法如下。
with open('d:\\test.txt') as f:
for line in f:
print(line)
2、操作文件
1)写文件
函数格式:write(str)
返回值:返回所写入文件的字符串中的字符数。
说明:该函数可以一次性写入一个字符串内容,到文件中。每次写入文件是,如果使用的模式为w,那么因为着本次写入为覆盖式写入,即写入内容会替换掉原有文件内容。
f1=open('a1.txt','w',100,encoding='utf-8')
f1.write('写入文件的内容')
f1.flush()#强制把buffer中缓存数据写入文件,但不关闭文件
f1.close()
函数格式:writelines(sequence)
返回值:无
说明:该函数可以使用列表、字符串、元组、集合、字典等作为参数,其中这些序列中的元素必须为字符串类型,同时也可以一次性写入多行字符串。(需要注意的是,当写入的内容是字典时,只能将字典的key值写入)
f1=open('a1.txt','w',100,encoding='utf-8')
set1={'1','2','3'}
f1.writelines(set1)
f1.flush()#强制把buffer中缓存数据写入文件,但不关闭文件
f1.close()
2)读文件
函数格式:read([size])
返回值:返回按字节逐一读取的数据。
说明:该函数按照字节个数,逐一读取文件中的数据。如果没有规定读取数据的字节大小即size,一直读完文件中全部数据,如果规定了数据的字节大小,只读取规定字节数的内容。
f1=open('a1.txt','r',100,encoding='utf-8')
f1.read()
f1.flush()#强制把buffer中缓存数据写入文件,但不关闭文件
f1.close()#关闭文件
函数格式:readline()
返回值:返回读取的一行字符串
说明:该函数一次能够读取文件中一行内容,如果需要读取全部内容,需要配合while循环使用,注意使用读取到的文件内容作为条件判断,即文件内容为空字符串时,退出循环。
f1=open('a1.txt','r',encoding='utf-8')
f1.readline()#一次读取一行内容
f1.flush()#强制把buffer中缓存数据写入文件,但不关闭文件
f1.close()#关闭文件
函数格式:readlines()
返回值:返回一个包含多个字符串的列表。
说明:该函数能够一次性将文件中的数据全部读取出来,然后将文件中每行字符串,作为一个列表的元素,将其组装成一个列表返回。
f1=open('a1.txt','r',encoding='utf-8')
f1.readlines()#一次读取一行内容
f1.flush()#强制把buffer中缓存数据写入文件,但不关闭文件
f1.close()#关闭文件
3、关闭文件
函数格式:close()
返回值:无
说明:当我们操作文件时,进行相关的写入操作,Python将数据写入文件之前,会将文件保存在文件缓冲区中,在我们调用close()函数时,首先会将文件缓冲区内还没有写入到文件中的数据进行刷新并强制写入文件,然后关闭Python与文件的通道,释放相关资源。
4、json格式处理
在Python中,提供了json模块可以实现对特殊数据结构读写。json是所有的编程语言都通用的序列化格式,它支持的数据类型比较有限:数字,字符串,列表,字典。json模块提供了四个功能:dumps,dump,loads,load。其中dumps序列化 loads反序列化,只在内存中操作数据,主要用于网络传输 和多个数据与文件打交道。dump序列化 load反序列化 ,主要用于一个数据直接存在文件里--直接和文件打交道。
1)将嵌套列表或字典转为json格式数据
import json
f=open('a1.txt','w',encoding='utf-8')
dic={1:'张三',2:'李四'}
dic2={11:'张三三',2:'李思思'}
a=json.dumps(dic)
f.write(a+'\n')
b=json.dumps(dic2)
f.write(b+'\n')
f.close()
2)将文件中的列表或字典json字符串读取出来
import json
f=open('a1.txt','r',encoding='utf-8')
for i in f:
print(json.loads(i))
f.close()
5、文件及路径操作函数
1)isfile()与isdir() (os.path模块)
函数格式:os.path.isfile(file)
返回值:bool
说明:根据传入的参数,判断该内容是否为文件类型。如果是文件类型返回True,如果不是返回False
isdir()
函数格式:os.path.isdir(path)
返回值:bool
说明:根据传入的参数,判断内容是否为目录类型,如果是目录就返回True,如果不是返回False
2)创建路径 mkdir()、删除路径removedirs() (os模块)
函数格式:os.mkdir(path)
返回值:无
说明:如果指定路径中不存在该目录,那么创建该目录。注意,如果存在同名目录,则报错
函数格式:os.removedirs(path),os.rmdir(path)
返回值:无
说明:删除指定的目录,如果该目录中存在文件或子目录,都不允许删除。否则报错。
3)删除文件 remove() (os模块)
函数格式:os.remove(file)
返回值:无
说明:删除指定的文件,如果该文件不存在则报错。如果文件存在就删除。
4)判断文件/目录是否存在 exists()
函数格式:os.path.exists(file/path)
返回值:bool
说明:判断指定的文件或路径是否存在,如果存在返回True,如果不存在返回False。
5)返回指定路径下,所有子路径 listdir()
函数格式:os.listdir(path)
返回值:list
说明:返回指定路径下,所有的子路径。
6)返回当前路径 getcwd()
函数格式:os.getcwd()
返回值:path
说明:返回当前程序所在的绝对路径
7)返回文件大小 getsize()
函数格式:path.getsize()
返回值:int
说明:返回指定文件的大小,单位是字节
8)重命名 rename()
函数格式:os.rename(oldfilename/oldpath,newfilename/newpath)
返回值:无
说明:将指定的文件名或目录名进行重命名。
9)替换 replace()
函数格式:os.replace(src,dst)
返回值:无
说明:使用目标文件替换掉原文件
from os import path
import os
path.isdir('macbook')#判断是否为目录
path.isfile('a1.txt')#判断是否为文件
path.exists('a1.txt')#判断指定路径的文件是否存在
os.mkdir('newmakdir')#创建目录
os.removedirs('newmakdir')#删除指定的目录,如果该目录下有文件或子目录则不允许删除
os.getcwd()#获取当前程序运行的路径
os.rename('macbook/newdir','macbook/new1')将指定路径下的文件修改文件名