不多赘述,文件部分比较简单,看代码就懂,直接上代码:
file = open('text.txt')
print(file.read())
file.close()
print(file.mode)
print(file.encoding)
print(file.closed)
##
今天又是学习Python的一天啊!
r
cp936
True
一.读文件
open()函数:
用途:打开或创建一个文件;
完整语法格式:
file = open(file_name,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)
- file_name :文件路径,相对或绝对路径;
- mode :打开方式;
- buffering :设置缓冲;
一般常用的只有前两个而已;
除了第一个参数必需,后面均可选,未指定mode,则默认mode为 “r”,即只读;
buffering参数 :
buffering参数用于设置缓冲区,缓冲区能够大大提高程序执行I/O的性能。
buffering为0或者False时不设置缓冲区;
为1或者True时设置缓冲区,缓冲区大小为默认值;
为大于1的数时设置缓冲区,缓冲区大小为被该数指定,单位为字节;
为负数时设置缓冲区,缓冲区大小为默认值;
以open函数创建的file对象常用方法及属性:
- file.read(size) :读取指定字节数,size参数指定读取多少字节,如果未给出或者size为负数则读取所有;
- file.close() :关闭文件;
- file.closed :判断文件是否关闭,返回bool值;
- file.name :返回文件名称;
- file.mode :返回文件的访问方式;
- file.encoding :返回文件的编码方式;
其它方法用到再说;
with as自动关闭文件:
当我们不是很确定究竟什么时候该关闭文件时,利用with as语句可以帮助实现自动关闭文件,你尽管使用,Python会在恰当的时候把文件关闭;
with open('text.txt') as file:
contents = file.read()
print(contents)
print(file.closed)
##
今天又是学习Python的一天啊!
True
逐行读取文件:
当文件过大或者其它情况下,我们可以逐行读取文件,具体有以下几种方法:
for循环:
file = open('text.txt')
for line in file:
print(line)
file.close()
##
今天又是
学习Python的
一天啊!
可以看到逐行读取每行之间会多出空白行,这是因为每行结尾的换行符也被print输出了的缘故,可以借助rstrip方法消除空白行;
readline()方法:
readline()方法:
file = open('text.txt')
while True:
line = file.readline()
if not line : break
print(line.rstrip())
file.close()
##
今天又是
学习Python的
一天啊!
readline()方法里面也可以指定size参数,表示每行可以读取多少字符;
readlines()方法:
file = open('text.txt')
while True:
line = file.readlines()
if not line : break
print(line)
file.close()
##
['今天又是\n', '学习Python的\n', '一天啊!']
readlines()方法返回一个字符串列表,根据指定参数的不同,返回的列表数目也不一样,默认返回一个列表;
二.写文件
write()函数:
用途:向文件中写入内容;
file = open('try.txt','w')
str = '今晚月色真美!'
file.write(str)
f.close()
上述代码已经完成了向文件try.txt中写入数据的过程;如果想换行写入可以手动加入\n字符,但write的参数只能是字符串;
需要注意的是我们写入的内容最开始都是在缓冲区内的,只有当调用close()方法时,Python才会把这些数据送进文件内,因此如果没有close(),那么文件仍然没有我们写入的内容;
如果写入数据后不想立即关闭文件可以使用flush()函数,它会把缓冲区内的数据送进文件内;
file = open('try.txt','w')
str = '今晚月色真美!'
file.write(str)
f.flush()
对于以二进制格式打开的文件,写入时可以不设置缓冲区,写入数据将直接送进文件内,但以文本格式打开的文件则必须设置缓冲区;
writelines()函数:
writelines函数与write函数差不多,但是write的参数是一个字符串,writelines的参数可以是一个字符串列表,但是writelines函数写入数据时,不会在每行结尾自动加换行符;
file = open('try.txt','w')
str = ['——今晚月色真美!\n','——我知道。']
file.writelines(str)
file.close()
## try.txt:
——今晚月色真美!
——我知道。
部分内容(不限于本文)参考自: