python 读写文件相关操作

open

open 函数有常用的三个参数, 分别表示: 文件路径(file) , 打开文件的模式(mode), 编码格式 (encodeing). 打开文件的模式基础的有: “r”, “w”, “a”.分别表示 只读, 只写, 追加. 其中 “w” 模式下,新写入的内容会把原先文件中的内容替换掉. “a” 模式下,默认光标在原有内容末尾, 只会追加新的内容,不会替换掉原有内容. 如果光标在文件原有内容中,那么新添加的内容会将光标后面原有的等量文件内容替换掉.

对文件进行读取操作我们用 read 函数,写入操作我们使用 write 函数. 对文件操作完成后,我们还需要对文件进行关闭操作, 关闭操作使用 close 函数.

path = r"c:\users\Desktop\read&write.txt"
file_ = open(path, "r", encoding=utf-8)
content = file_.read()
print(content)
file_.close()

文件读写的三种模式

  1. w 写模式.他是不能读的, 如果用 w 模式打开一个银镜存在的文件, 会清空以前的文件内容, 重新写, w+ 是读写内容, 只要有 w ,肯定会清空原有内容.
  2. r 读模式. 只能读, 不能写, 而且文件必须存在, r+ 是读写模式, 只要有 r , 文件必须存在.
  3. a 追加模式, 在稳健的末尾添加内容
  4. rb+, wb+, ab+, 这种事二进制模式打开或读写.

文本处理时, 我们通常是指处理的文本内容. python 将文本文件的内容读入可以操作的字符串变量非常容易. 文件对象提供了三个"读"方法: .read(), .readline(), .readlines() 每种方法可以接受一个变量以限制每次读取的数据量, 但通常不使用.

.read() 每次读取整个文件, 它通常用于将文件内容放到一个字符串变量中. 然而 .read() 生成表示文件内容最直接的字符串, 但对于连续的面向行处理,确实不方便,不必要的, 并且如果文件大于可用内存, 则不可能实现这种处理.

.readline() 和 .readlines() 非常相似. 他们都在类似下面的结构中使用:

path = r"c:\users\Desktop\read&write.txt"
fh = open(path, "r", encoding=utf-8)
	for line in fh.readlines():
		print(line)
fh.close()

.readline() 和 .readlines() 之间的差异是后这一次读取整个文件, 像 read() 一样. readlines() 自动将文件内容分析成一个行的列表, 该列表可以由 python 的 for … in …结构进行处理. 另一方面, .readline()每次只读取一行, 通常比 readlines() 慢的多, 仅当没有足够内存一次读取整个文件时, 才应当使用 readline()

由于文件读写是都有可能产生 IOError, 一旦出错, 后面的 close()函数就不会调用, 所以, 为了保证无论是否出错都能正确的关闭文件, 我们可以使用 try … finally 来实现:

try:
    f = open(path,"r")
    print(f.read())
finally:
    if f:
        f.close()

但是每次都这么写实在太繁琐, 所以 python 引入了 with 语句来自动帮我们调用 close() 方法:

with open(path,"r") as f:
    print(f.read())

with … as …

这个语法是用来代替传统的 try … finally 语法的.

基本思想是 with 所求值的对象必须有一个 _ _enter _ _方法, 一个 _ _exit _ _()方法.

紧跟 with 后面的语句被求值后, 返回对象的__enter__()方法被调用, 这个方法的返回值将被赋值给 as 后面的变量. 当 with 后面的代码块全部被执行完之后, 将调用前面返回值对象的__exit__()方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值