为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第6天 Python读写文件

课程名称Python3 进阶教程(新版)
章节名称第6章 Python读写文件
讲师名称咚咚呛

课程内容

  • 向程序输入内容
  • 打开文本文件
  • 打开二进制文件
  • 读取文件内容
  • 把字符串写入文件
  • 往文件增加内容
  • 正确关闭文件

学习收获

向程序输入内容

到目前为止,我们编写的程序都是直接运行的,在运行过程中并没有接收程序外部的输入。如果可以通过输入,动态改变变量的值,那就好了,input()函数可以接收外部的输入。输入的是字符串,要注意变量使用的场景,进行转换

code = input('please input your expression: ')

res = eval(code);

print(res)

打开文本文件

Python 提供了open()函数,可以打开一个文件,得到一个文件file对象,而file对象提供相关的方法对文件内容进行读写等操作。

open()函数有若干个参数,比较重要的是以下三个参数:

  • 文件路径:指定需要打开的文件的文件路径

  • 打开模式:针对不同文件(二进制文件、文本文件)以及不同操作(读操作、写操作),会有不同的打开模式

  • 编码:设定打开文件的默认编码

常用的打开模式如下:

模式 描述
t 文本模式(默认)
x 写模式,新建一个文件
b 二进制模式,打开二进制文件
+ 更新一个文件(可读可写)
r 以只读模式打开一个文件
rb 以二进制格式只读模式打开一个文件
w 打开一个文件进行写入,如果文件内容已存在,会清除原有的内容
wb 以二进制格式只写模式打开一个文件,会清除原有的内容
a 打开一个文件并追加内容,会往文件尾部添加内容
ab 以二进制格式打开一个文件并追加内容,会往文件尾部添加内容
w+ 打开一个文件进行读写,如果文件内容已存在,会清除原有的内容
a+ 打开一个文件并使用追加进行读写

mode string must begin with one of ‘r’, ‘w’, ‘a’ or 'U’

f = open('/www/wwwroot/abcd.test/test.txt','r');

f.close()

打开二进制文件

除了文本以外,还有大量的非文本文件,比如图片、压缩文件、视频文件、音乐文件等等,这种文件统称为二进制文件,在Python中打开二进制文件,需要不同的打开模式。

模式 描述
b 二进制模式,打开二进制文件
wb 以二进制格式只写模式打开一个文件,会清除原有的内容
ab 以二进制格式打开一个文件并追加内容,会往文件尾部添加内容
rb 以二进制格式只读模式打开一个文件
with open('test.txt', 'rb') as f:
print(f.read())
f.close()

读取文件内容

打开文件之后,就可以读取文件的内容,文件对象提供多种读取文件内容的方法。

读取若干内容

文件对象提供read()方法,可以读取文件中的若干个字符,它提供一个参数size,可以指定读取字符的数量。


# 文件内有以下内容:
# Hello World.
# Hello Python.
# Hello Imooc.

s = f.read(5)
print(s) # ==> Hello

# 当read()之后,访问文件的游标就会移动到第六个字符前面,此时,继续read,将得到Hello后面的结果。

s = f.read(6)
print(s) # ==> ' World'
读取一行

文件对象提供readline()方法,和read()方法类似,可以读取文件中的若干个字符,它也提供一个参数size,可以指定读取字符的数量,不过和read()方法不同的是,readline()方法遇到一行结束的时候,就会返回。

f = open('test.txt', 'r') # 重新打开文件
s = f.readline(20)
print(s)  # ==> 'Hello World.\n'
读取多行

文件对象提供readlines()方法,可以读取多行字符,返回一个列表。它提供一个hint参数,表示指定读取的行数,没有指定则默认以列表的形式返回文件所有的字符串。

f = open('read.py','r')

print(f.read(10),f.readline(20),f.readlines())

f.close()

把字符串写入文件

模式 描述
w 打开一个文件进行写入,如果文件内容已存在,会清除原有的内容
wb 以二进制格式只写模式打开一个文件,会清除原有的内容
w+ 打开一个文件进行读写,如果文件内容已存在,会清除原有的内容
写入若干字符

文件对象提供write方法向文件内写入若干字符,它接受一个字符串参数,表示需要写入的字符串。

写入若行字符

文件对象提供writelines()方法向文件内容写入多行数据,它接受一个列表,表示需要写入的字符串列表。

f = open('test.txt', 'r')
lines = f.readlines()
f1 = open('test1.txt', 'w')
for line in lines:
    line = line[::-1]
    f1.write(line)

f1.close()
f.close()

往文件追加内容

模式 描述
a 打开一个文件并追加内容,会往文件尾部添加内容
ab 以二进制格式打开一个文件并追加内容,会往文件尾部添加内容
a+ 打开一个文件并使用追加进行读写

文件对象提供seek()方法,可以移动文件的游标位置,它接受一个参数,表示文件的位置,0:文件首部,1:当前位置,2:文件尾部,通过seek()可以把文件游标移动到文件首部但不删除文件的内容。

​f = open('test.txt', 'a+')
content = f.readlines()
print(content) # ==> []
f.seek(0)
content = f.readlines()
print(content) # ==> ['Hello World\n', 'Hello Python\n', 'Hello Imooc\n']

正确关闭文件

在进行文件操作的时候,正确关闭一个文件非常重要,如果在文件读写后,没有正确关闭一个文件的话,则有可能导致文件损坏,文件内容丢失等问题。

使用close()方法,也不是100%安全的,如果在close()文件之前,程序异常退出了,那么文件也得不到正确的关闭。

with关键字对资源进行访问的场合,会确保不管在使用过程中是否发生异常,都会执行必要的“清理”的操作,释放资源,比如文件使用后自动关闭等等。当文件使用结束后,不需要显式的调用close()关闭文件。

with open('test.txt', 'r') as f:
    content = f.readlines()
    for line in content:
        print(line)

打卡截图

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消