一、open() 函数
1、第一个参数:文件名
2、打开方式:
(1)' r ':以只读模式打开文件(readlines() 以列表形式输出)
输入:
file = open('a.txt', 'r')
print(file.readlines())
file.close()
输出:
['cy\n']
(2)' w ':以只写模式打开文件,若不存在则创建
输入:(此时 b.txt 不存在,这样操作是创建 b.txt 然后录入数据 “hello world” )
file = open('b.text', 'w')
file.write("hello world!")
file.close()
若文件存在且已有内容,则进行覆盖
(3)' a ':追加模式,可以对文件已有内容后面进行追加
输入:
file = open('b.text', 'a')
file.write("hello world!")
file.close()
输出:
hello world!hello world!hello world!
(4)' rb ' 和 ' wb ' :以二进制文件读写,所谓二进制文件,就是以字节进行存储,,eg:mp3音频文件,jpg和png图片,doc文档等等
输入:
file = open('13.png', 'rb')
file1 = open('copy13.png', 'wb')
file1.write(file.read())
file1.close()
file.close()
输出:
先以只读方式打开二进制文件 13.png ,然后以只写方式打开copy13.png,若不存在,则创建一个新的 copy13.png ,接着给 copy13.png 写入从 13.png 读取的数据,最后关闭文件;
(5)'a+' 以读写方式打开文件
二、文件对象的常用方法
1、read(size) 若省略 size ,则默认读到末尾
file = open('a.txt', 'r')
print(file.read(1))
file.close()
无论文件内容是文字还是字符,均输出第一个
2、readline() 只读取文件中第一行的内容
3、readlines() 把每一行作为一个独立对象,然后放到列表中
输入:
file = open('a.txt', 'r')
# print(file.read(1))
print(file.readlines())
file.close()
py
y
t
hon
输出:
['py\n', 'y\n', 't\n', 'hon\n']
4、write() 写入一个字符串
5、writelines() 写入一个列表
输入:可以加入 ' \n ' 来换行
file = open('a.txt', 'a')
zwj = ['dog\n', '250\n']
file.writelines(zwj)
file.close()
输出:
py
y
t
hon
dog
250
6、seek(num) 定位文件指针到第 num 之后(文字每个两字节,字符每个一字节,换行占两个字符)
7、tell() 返回文件指针的位置
8、flush() 保存
9、close() 关闭
三、with 语句,with 语句完结后,自动执行释放内存的操作,即不需要 close()
with open('a.txt', 'r') as file:
print(file.read())
补充:
(1)r+
和 w+
都是Python文件操作模式中的标识符,它们都允许读取和写入文件。但它们之间有一些区别。
-
r+
:打开文件用于读写,文件指针位于文件开头,如果文件不存在会抛出异常。 -
w+
:打开文件用于读写,如果文件存在则截断文件,如果文件不存在则创建文件。文件指针位于文件开头。
总的来说,r+
模式打开一个已经存在的文件,w+
模式创建一个新文件,如果文件已经存在则截断它。在使用w+
模式时,一定要小心,因为如果打开的是一个已经存在的文件,它的内容将被清空。
在使用r+
和w+
模式时,需要注意的是,每次写入数据后,必须将文件指针移动到正确的位置。如果不移动指针,则新的写入数据将覆盖旧的数据,而不是追加到文件的末尾
(2)如果要将文件指针移动到文件的开头,可以使用seek(0, 0)
;如果要将文件指针移动到文件的末尾,可以使用seek(0, 2)