1.打开文件

1.open()

open()常用参数:

参数名称

意义

file

位置参数,要打开文件的路径

mode

关键字参数,打开文件的模式

encoding

关键字参数,编码格式

参数详解:

1.file
file代表我们要打开的文件,可以使用绝对路径或相对路径

(1)当我们要打开的文件与程序不在同一个级文件夹下,则使用绝对路径:

打开一个文件作为object对象 java 打开一个文件的代码_打开文件


在test.py文件中打开a\a.txt,代码如下(伪代码):

open(r"D:\a\a.txt")
或
open("D:/a/a.txt")

注意事项:
	1.为了避免错误,在路径前加r,因为\在python中还有转义的意思,r是rawstring,会显示原生的字符串
	2.将\换为/,系统默认\表示文件目录,但在此我们也可以用/
	3.相对路径是文件完整的路径,相对路径定位文件准确,但可能前缀过长让代码看起来冗余

(2)当我们要打开的文件与程序所在文件在同一级文件夹下,使用相对路径

打开一个文件作为object对象 java 打开一个文件的代码_编码格式_02


在test.py中打开b\a.txt和b\c\e.txt,代码如下(伪代码):

open("a.txt")
open(r"c\e.txt")

注意事项:
	1.要打开的文件一定与程序在同一级文件夹下,如果不在就会报错

2.mode
打开文件有两种模式,t(文本模式)和b(字节),必须要和操作文件模式连用,默认模式是rt

t模式的特点:

  1. 读写都是以str为单位
  2. 读写的都是文本文件,操作文本文件时很方便
  3. 要指定encoding

b模式的特点

  1. 读写都是以bytes为单位
  2. 可以读写任何文件,更通用
  3. 不指定encoding

3.encoding
文件中的数据本质上是存在硬盘,在硬盘中是某种编码格式的二进制数据,那我们读出来的也是二进制数据,所以要进行解码,指定了encoding后,python就会自动帮我们按照encoding参数进行解码,如果不指定,就会按照我们操作系统的编码类型进行解码。

看一个错误示范,代码如下:

f = open("a.txt",mode="rt",)
ret = f.read()
print(ret)

运行结果:

打开一个文件作为object对象 java 打开一个文件的代码_编码格式_03


我的电脑是windows操作系统,默认编码格式是gbk,而这个a.txt文件的编码格式设置成utf-8,这样的话肯定无法解码

我们加上encoding,再试一试:

f = open("a.txt",mode="rt",encoding="UTF-8")
ret = f.read()
pritn(ret)

运行结果如下:

打开一个文件作为object对象 java 打开一个文件的代码_相对路径_04


注意:encoding一定要和文件的编码格式相同

2.关闭文件

操作系统能打开的文件个数是一定的的,而且如果只是打开文件操作完后却不关闭会白白浪费我们的内存,所以一定要记得关闭文件。

1.手动关闭

f = open("a.txt",mode="rt",encoding="UTF-8")
ret = f.read()
pritn(ret)
f.close()										#关闭文件

2.with(自动关闭)

with更加人性化一点,with语句结束后会帮我们自动关闭文件

with open("a.txt",mode="rt",encoding="UTF-8") as f:				
	ret = f.read()
	pritn(ret)

来验证一下with的自动关闭:

with open("a.txt",mode="rt",encoding="UTF-8") as f:				
	ret = f.read()
	pritn(ret)
f.read()

结果如下:

打开一个文件作为object对象 java 打开一个文件的代码_相对路径_05