Python中的文件是对象。
通过 open() 打开一个文件,获取一个文件对象,然后对文件进行读写操作,如下示例。
# 读写打开一个UTF-8编码格式文件,如果文件不存在则创建
file= open(r'F:\1.txt', mode='w+', encoding='UTF-8')# open()打开一个文件,返回一个文件对象
file.write('Hello!\word') # 写入文件
file.seek(0) # 光标移动到文件开头
file_content = file.read() # 读取整个文件内容print(file_content)
file.close() # 关闭文件
一、open()打开文件获取文件对象
open() 函数参数说明
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
open()函数用于打开一个文件,创建一个 file 对象,改对象的相关的方法才可以被调用对文件进行读写。
file 文件的路径,需要带上文件名包括文件后缀(c:\\1.txt)
mode 打开的方式,只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering 缓冲的buffering大小, 0,就不会有寄存。1,寄存行。大于 1 的整数,寄存区的缓冲大小。负值,寄存区的缓冲大小为系统默认。
encoding 文件的编码格式(utf-8,GBK等)
常用文件的不同打开模式(完整列表见附件)
r 以只读方式打开文件。文件的指针会放在文件的开头。
w 以写入方式打开文件。文件存在覆盖文件,文件不存在创建一个新文件。
a 以追加方式打开文件。如果文件已存在,文件指针放在文件末尾。如果文件不存在,创建新文件并可写入。
r+ 打开一个文件用于读写。文件指针会放在文件的开头
w+ 打开一个文件用于读写。文件存在覆盖文件,文件不存在创建一个新文件。
a+ 打开一个文件用于读写。如果文件已存在,文件指针放在文件末尾。如果文件不存在,创建新文件并可写入。
记忆方法:记住 r读,w写,a追加,每个模式后加入+号就变成可读写。
file= open(r'F:\1.txt', mode='w', encoding='UTF-8')
二、文件的读取与写入
文件读取 read():
read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
语法:
file.read([size]):读取文件(读取size个字符,默认读取全部)
file.readline()):读取一行
file.readlines():读取完整的文件,返回每一行所组成的列表
示例:
file = open('woodman.txt', encoding='utf-8')print(file.read(18)) # 读取18个字符,注意中文字符一个字为1个字符print('-------')print(file.read()) # 读取剩下的所有的文本,光标位置在上次读取结束的位置print('-------')
file.seek(0,0) # 移动光标到文件开头print(file.readline()) # 读取一行print('-------')
file.seek(0,0) # 移动光标到文件开头print(file.readlines()) # 读取文件,返回每一行所组成的列表
file.close() # 关闭文件
输出结果:
Hello, woodman.
你好
-------
朋友们,大家好。
-------
Hello, woodman.
-------
['Hello, woodman.\n', '朋友们,大家好。']
注意:文件读取后光标停止在读取结束的位置,file.seek(size) 将光标指针移动到文件的size位置。
文件写入write():
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
write()方法不会在字符串的结尾添加换行符('\n'):
语法:
file.write(str):将字符串写入文件
file.writelines(lines):将多行文本写入文件中,lines为字符串组成的列表或元组。
示例:
file = open('write_woodman.txt', mode='w', encoding='utf-8')
file.write('hello,\nwoodman') # 写入文件,\n 转义字符换行
file.write('\n------------------\n')
str1 = '''你好!'''
file.write(str1) # str1文本块写入文件,会安装文本块的格式
file.write('\n------------------\n')
list1 = ['Python', '是一门解释型语言\n', 'python非常简单']
file.writelines(list1) # 写入列表数据
file.close() # 关闭文件
运行程序后文件内容:
hello,
woodman
------------------
你好!
------------------
Python是一门解释型语言
python非常简单
文件对象的其他方法:
file.seek(偏移量,[起始位置]):用来移动文件指针.
偏移量:单位:比特,可正可负
起始位置:0-文件头部,默认值;1-当前位置;2-文件结尾
file.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的比特数)
file.close():关闭文件
附件:
模式 | 描述 |
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |