首先,现在项目下新建一个文件,名为"test.txt"
1、文件操作的几个要素
1、文件路径
2、编码方式,如gbk等
3、操作方式,如只读、只写、追加、读写、写读等。
4、open函数,在做所有操作之前,打开一个文件是首先的
附: 操作文件有两种形式,一种是通过文件句柄进行,另一种是通过with关键字进行。
2、读取文件的操作
通过文件句柄读取文件
1、通过read()函数即rb模式读取文件
实例:
首先,向test.txt文件中写入“dmadmfahda人”内容
然后,在.py文件中输入以下代码
f = open('test.txt','r',encode='utf-8') #打开文件
context = f.read()
print(context)
读取文件的基本步骤:
- 调用open()函数打开文件,并设置其模式为读取类型的模式,再设置其编码;需要用一个变量去接收open()函数返回的文件句柄
- 通过open()函数返回的文件句柄调用相应的读取函数,用一个变量接收其返回值即可。
注(open函数中的第二个参数): 该函数用来指定操作文件的模式,主要有以下几个:
- r:只读操作
- w:只写操作
- a:只追加操作
- r+:读写操作
- w+:读写操作,由于有w存在,会清空原有文件,然后进行写,此时进行读取操作自然读到的为空文件
- a+:可以将写入的和原有的内容全部读出来
- rb:只读操作,并且以bytes形式输出内容
- wb:只写操作,并且以bytes形式输出内容
- ab:追加操作,并且以bytes形式输出内容
2、以rb模式读取文件,注意,此时不能指定编码格式(即encoding参数)实例如下:
3、在文件读取中常用的函数
- read():直接读取出文件内的所有内容
- readline():一行一行的读,该方法可以传入一个参数,用来指定读取的字符个数,而非读取的行数。
- readlines():每一行当成列表中的一个元素,添加到列表当中
- truncate(a):读取原文件位置a以前的文件
- close():关闭文件句柄
- tell():获取文件中当前光标所在的位置,在端点续传等功能有重要应用。
- seek(a):a为整数,可以调节文件中当前光标的位置,在文件的读写操作中都有非常重要的作用。
通过with关键字读取文件
以一个实例为例:
context = ""
with open('test.txt','r',encoding='utf-8') as f:
context = f.read()
print(context)
可以看到,用with关键字读取文件的操作不需要使用close()方法关闭文件。其操作的基本语法如下:
with open(文件路径,读取的模式[,文件的编码]) as 句柄名:
context = 句柄名.具体的读取函数()
4、文件内容的修改操作
向文件中写入内容
python中向文件中写入内容有两种大的方法:
- 以开头的“w”模式:由于每次用open打开文件时,光标会默认在第一个位置,所以当使用此模式时,文件中原来的内容会被清空,只留下新写入的内容。
- “a”和“ab”模式:追加,相比于1中的“w”模式,这个模式不会清空文件中的内容。
实例: 向“test.txt”文件中写入内容(用with关键字)
with open("test.txt",'w',encoding='utf-8') as fi:
s = "dadaasdfmd\nsdamsdfa\nfasdfna" #\n表示换行
fi.write(s)
由此可见,文件的修改操作和读取操作的过程及语法极为类似,只需要在open函数中修改相应的模式为写模式而非读取模式,然后调用相应的写即可。
5、重命名和删除文件的操作
在python中,与操作系统进行直接交互的,大都要用到os模块,比如获取当前文件夹路径等等。这里介绍几个该模块下的函数:
- 重命名:os.rename(,src,newsrc)
- 删除文件:os.remove()
- 删除空目录:os.removedirs()和rmdir()
- 执行命令行命令:system(command)
- 创建文件夹:mkdir()(一次只能创建一级文件夹)
- 创建多级文件夹:makedirs()
注: 删除非空目录则需要使用到另外的模块shutil
下的方法rmtree()
,该方法可以直接将一个非空目录进行删除。
6、对csv文件的操作
对于这种文件的操作,需要使用到python的内置模块csv模块,具体的过程如下:
- 写入步骤:
1. file = open(路径,模式,编码,newline=""):打开文件,newline的参数指定的是新的一行怎么写,即下一次writerow的内容与本次的内容的间隔符,默认换行,即写完后的内容会与上一行间隔一行
2. c = csv.writer(file,dialect):写入文件,其中dialect指定写入的格式,默认为excel
3. c.writerow([]):写入内容,即一行所写入的内容,传入一个列表
4. file.close()关闭文件
- 读取步骤:
1. file = open(路径,模式,编码):打开文件
2. lines = csv.reader(file) #获取读取到的内容对象
3. 用循环进行读取
for line in lines:
print(line) #从这里可以看出,line是一个列表,即其返回的内容有点类似于二维列表
4. 关闭文件:file.close()