2021-04-29 第二阶段day22

一、文件读写操作

1、打开文件

常用:变量 = open(“文件名”,“r/w/a”,encoding=‘UTF-8’)
file_object = open(file_name, access_mode=‘r’, buffering=-1,encoding=None)
file_name:在本身的文件夹内可直接写文件名,不在自身文件夹也可以写绝对路径/相对路径
access_mode是指打开方式,不写默认“r”

在这里插入图片描述

2、对文件进行读/写


(一)读操作的写法(参数都为字符个数)

(1) read(参数) 按字符读取

1、功能:来直接读取文件中字符。
2、参数: 如果没有给定size参数(默认值为-1)或者size值为负,文件将被读取直至末尾,给定size最多读取给定数目个 字符(字节)。
3、返回值: 返回读取到的内容。

data = file.read(15)   # 15表示一次最多显示15个字
print(data)
data = file.read(15)   # 第二次读是继续读,而不是从头开始
print(data)
# 如果读取到文件结尾继续读,则返回空字串

(2)readline(参数) 按行读取

1、功能: 用来读取文件中一行。
2、参数: 如果没有给定size参数(默认值为-1)或者size值为负,表示读取一行,给定size表示最多读取制定的字符(字节)。
3、返回值: 返回读取到的内容。

# 有参数时 表示一次读取这一行的几个字符,下次读取会将这一行没读完的读完.
line = file.readline(4)
print(line) # 春眠不觉
line = file.readline()
print(line) # 晓,处处闻啼鸟

(3)readlines(参数) 读取所有行作为一个列表

1、功能: 读取文件中的每一行作为列表中的一项。
2、参数: 如果没有给定size参数(默认值为-1)或者size值为负,文件将被读取直至末尾,给定size表示读取到size字符 所在行为止。
3、返回值: 返回读取到的内容列表。

# 有参数时 读到第几行,会把这一行的全部字符都读出来.
lines = file.readlines()
print(lines)

(4)迭代法

语法: for line in f: print(line)

for line in file:
    print(line)

(二)写操作的写法(需要\n才能换行)

(0)字节串类型bytes

纯英文可以字符串前加b表达

bytes1 = b"Hello"  # 一个字节串常量
print(bytes1)  # b"Hello"

有非英文字符串或者字符串变量,用encode()

bytes2 = "Hi,老刘".encode()  # 把字符串转化成字节串
print(bytes2)  # b'Hi\xef\xbc\x8c\xe8\x80\x81\xe5\x88\x98'

字节串转换为字符串

print(bytes2.decode()) # Hi,老刘

(1)write(内容)

1、功能: 把文本数据或二进制数据块的字符串写入到文件中去。
2、参数:要写入的内容。
3、返回值:写入的字符个数。

n = file.write("cxeewr\n")
print("写入%d个字符" % n)  # 写入7个字符

二进制写入:

file = open("file.txt","wb")
n = file.write("lij后方gl各色jij尼加拉瓜\n".encode())
print("写入%d个字节" % n)

(2)writelines(str_list) 将字符串列表作为参数写入文件

1、功能:接受一个字符串列表作为参数,将它们写入文件。
2、参数: 要写入的内容列表。

data = [
    "春眠不觉晓,处处闻啼鸟.\n",
    "夜来风雨声,花落知多少."
]
file.writelines(data)

3、关闭文件

(1)file.close()

防止后面对这个文件进行误操作

(2)with操作

格式:
    with 表达式(as 对象):
        语句块

with语句块结束后会自动释放f 所以不再需要close。
1、定义:也叫上下文调度器,含有"_enter"与"_exit"。
2、

# 等同于 file = open("file.txt")
with open("file.txt","r+") as f:
    data = f.read()
    print(data)

# with语句块结束,file自动销毁

二、读写缓冲区(实时读写要记得刷新缓冲区)

buffering参数:
buffering = -1 系统自定义
buffering = 1 行缓冲 遇\n自动刷新缓冲区
buffering > 1 指定缓冲区大小 (必须以二进制方式打开)

filename = open("buffer.txt", "wb", buffering=10)
while True:
    msg = input(">>")
    if not msg:
        break
    filename.write(msg.encode())
    # filename.flush()  # 刷新一次缓冲区

filename.close()

三、文件偏移量

1、tell()

获取文件偏移量的方法:文件名.tell()

2、seek(offset,whence)

作用:移动文件偏移量位置。
参数含义:
(1)whence是基准位置的默认值为0,代表从文件开头算起,1代表从当前位置算起,2 代表从文件末尾算起。
(2)offset 代表相对于某个位置移动的字节数。负数表示向前移动,正数表示向后移动。
(3)必须以二进制打开才能换whence

file.seek(6,0)
data = file.read()
print(data)   # b'world'

file.seek(-3,2)
data = file.read()
print(data)   # b'rld'

file.seek(-5,2)
file.write(b"xx") # 从-5后开始替换 不能添加

四、os模块

1、获取文件大小

语法:os.path.getsize(file)
单位:字节

print("文件大小:",os.path.getsize("rain.txt")) # 文件大小: 1059

2、查看目录下的文件列表

语法:os.listdir(dir)

print("文件列表:",os.listdir("..")) # 文件列表: ['DAY3','DAY2','DAY1']

3、判断文件是否存在

语法:os.path.exists(file)
返回True,False

print("文件是否存在:",os.path.exists("dict"))

4、删除文件

语法:os.remove(file)
彻底删除,无法恢复

os.remove("haha.py")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值