学pyhton的第十三天

文件读写

1,打开文件

# open()函数实现,open(file, mode='r', encoding=None, errors=None)
"""
file参数表示要打开的文件,可以是字符串或整数,若是字符串,则表示文件名,文件名既可以是当前目录的相对路径,也可以是绝对路径,若是整数,则表示是一个已经打开的文件

mode参数是设置文件打开模式,用字符串表示
t:以文本文件模式打开文件
b:以二进制文件模式打开文件
r:以只读模式打开文件
w:以只写模式打开文件,不能读文件,如果文件不存在,则创建文件,如果文件存在,则覆盖其内容
x:以独占创建模式打开文件,如果文件不存在,则创建并以写入模式打开,如果文件存在,则引发FileExistsError异常
a:以追加模式打开文件,不能读内容,如果文件不存在,则创建文件,如果文件存在,则在文件末尾追加
+:以更新(读写)模式打开文件,必须与r,w或a组合使用,才能设置文件为读写模式
这些字符可以组合:
字符串               说明
rt或r               以只读模式打开文本文件
wt或w               以只写模式打开文本文件
xt或x               以独占创建模式打开文本文件
at或a               以追加模式打开文本文件
rb                  二进制文件模式,类似于rt
wb                  二进制文件模式,类似于wt
xb                  二进制文件模式,类似于xt
ab                  二进制文件模式,类似于at
r+                  以读写模式打开文本文件,如果文件不存在,则抛出异常
w+                  以读写模式打开文本文件,如果文件不存在,则创建文件
a+                  以读追加文本文件模式打开文件,不能读内容,如果文件不存在,则创建文件
rb+                 二进制文件模式,类似于r+
wb+                 二进制文件模式,类似于w+
ab+                 二进制文件模式,类似于a+

encoding参数用来指定打开文件时文件编码,默认是UTF-8编码,主要用于打开文本文件

errors参数用来指定文本文件发生编码错误时如何处理。推荐errors参数值为‘ignore’,表示遇到编码错误时忽略该错误,程序继续执行
"""
# 示例:
f = open('text.txt', 'w+')
f.write('hello,world')
print('1,创建文件,写入文件')

f = open('text.txt', 'r+')
f.write('money')
print('2,创建文件,覆盖文件内容')

f = open('text.txt', 'a')
f.write(' ')
print('3,创建文件,在文件尾部追加空格')

fname = 'D:/桌面文件/text.txt'
f = open(fname, 'a+')
f.write('王秉崟')
print('4,创建文件,在文件尾部追加王秉崟')


2,关闭文件

# 打开文件后,不再使用该文件,将其关闭会用到close()方法
# close()方法接收一个文件对象作为参数,表示要关闭的文件
# 在finally语句块中调用close()方法,确保文件被关闭
# 示例:
f_name = 'text.txt'
f = None
try:
    f = open(f_name)
    print('文件打开成功')
    content = f.read()
    print(content)
except FileNotFoundError as e:
    print('文件不存在,请先创建文件')
except OSError as e:
    print('处理OSError异常')
finally:
    if f is not None:
        f.close()
        print('文件已关闭')

# 在with as代码块中关闭文件
# 使用with as自动管理资源
# 示例:
f_name = 'text.txt'
with open(f_name) as f:
    content = f.read()
    print(content)


3,读写文本文件

# 读写文本文件,需要用到read()和write()方法
# read(size=-1):从文件中读取字符串,size参数表示要读取的字符数,如果size为-1,则表示读取的字符数没有限制
# readline(size=-1):在读取到换行符或文件尾时返回单行字符串,如果已经到文件尾,则返回一个空字符串,size参数表示要读取的字符数,如果size为-1,则表示读取的字符数没有限制
# readlines(): 读取文件数据到一个字符串列表中,每一行数据都是列表的一个元素
# write(s): 将字符串s写入文件,并返回写入的字符数
# writelines(lines): 向文件中写入一个字符串列表。不添加行分隔符,因此通常为每一行末尾都提供行分隔符
# flush(): 刷新写缓冲区,将缓冲区中的数据写入文件
# 示例:
f_name = 'src_file.txt'
with open(f_name, 'r', encoding='utf-8') as f:
    lines = f.readlines()
    copy_f_name = 'dest_file.txt'
    with open(copy_f_name, 'w', encoding='gbk') as copy_f:
        copy_f.writelines(lines)
        print('文件复制成功')



4,读写二进制文件

# 读写二进制文件,需要用到read()和write()方法
# read(size=-1):从文件中读取二进制数据(字节),size参数表示要读取的字节数,如果size为-1,则表示读取的字节数没有限制
# readline(size=-1):从文件中读取并返回一行。size参数表示限制读取的行数,如果size为-1,则表示读取的字节数没有限制
# readlines(): 读取文件数据到一个字节字符串列表中,每一行数据都是列表的一个元素
# write(b): 写入b字节,并返回写入的字节数
# writelines(lines): 向文件中写入一个字节字符串列表。不添加行分隔符,因此通常为每一行末尾都提供行分隔符
# flush(): 刷新写缓冲区,将缓冲区中的数据写入文件
# 示例:
f_name = '动漫人物1.jpg'
with open(f_name, 'rb') as f:
    b = f.read()
    copy_f_name = '动漫人物2.jpg'
    with open(copy_f_name, 'wb') as copy_f:
        copy_f.write(b)
        print('文件复制成功')

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WBY·~阿崟呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值