Python文件读写

不多赘述,文件部分比较简单,看代码就懂,直接上代码:

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:
——今晚月色真美!
——我知道。

部分内容(不限于本文)参考自:

菜鸟编程
廖雪峰的官方网站
c语言中文网
以及《Python编程-从入门到实践》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值