文件处理
在 Python 中使用文件的关键函数是 open() 函数。open() 函数有两个参数:文件名和模式。
有四种打开文件的不同方法(模式):
“r” - 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。
“a” - 追加 - 打开供追加的文件,如果不存在则创建该文件。
“w” - 写入 - 打开文件进行写入,如果文件不存在则创建该文件。 “x” - 创建 - 创建指定的文件,如果文件存在则返回错误。
此外,您可以指定文件是应该作为二进制还是文本模式进行处理。“t” - 文本 - 默认值。文本模式。
“b” - 二进制 - 二进制模式(例如图像)。
1.文件操作
2.目录操作
3.编码格式
4.文件读写
# 1.文件的存储方式:在计算机中,文件是以二进制的方式保存在磁盘上的
# 2.文件操作:文件文件
# 3.操作文件的步骤:
# 打开文件、读写文件、关闭文件
# 4.基础语法:
# open(filename, mode) filename:文件的路径 mode:打开的方式
# 1>一个函数:open() 三个方法:read(读取)、write(写入)、close(关闭)
# file = open('we.txt') # 返回的是一个文件对象,默认以只读的方式打开
# print(file.read()) # 读取文件内的数据
# file = open('we.txt', 'w') # w代表可写
# file.write('hello') # 往文件内写入数据
# file.close()
# 2>文件对象的属性:
# file.closed:如果文件关闭返回True, 否则返回为False
# file.mode:返回文件的访问模式
# file.name:返回文件的名称
# 1.打开文件
# f = open('we.txt')
# 2.读取文件内容
# text = f.read()
# print(text)
# 3.关闭文件
# f.close()
# 4.查看属性
# print('文件名:', f.name)
# print('访问模式:', f.mode)
# print('是否关闭:', f.closed)
# f = open('D:/work/ne2.txt') # 绝对路径建议用\\ 或者 /
# print(f.read())
# 5.模式
# r: 默认,只读模式(文件必须存在)
# r+: 可读写文件 (文件不存在会抛出异常)
# w: 只写模式(不存在会创建,存在删除原来的文件内容)
# w+: 先写再读,(如果读取,记得使用seek)
# a: 追加模式(不存在则创建,存在追加内容)
# f = open('we.txt', 'w+')
# f.write('hello123456')
# f.seek(0, 0) # seek方法改变当前文件的位置,(0,0)表示光标移到文件开头;
# seek第一个参数:表示要移动的字节数,
# seek第二个参数:指定开始移动字节的位置(0:将文件的开头作为参考; 1:使用当前的位置作为参考 2:文件的末尾作为参考)
# print(f.read())
# f.close()
# f = open('we.txt', 'a+')
# f.write('pyt hon') # 写入内容,光标在末尾
# f.seek(0, 0) # 把光标移到开头
# print(f.read())
# print(f.read())
# f.close()
# 6. with关键字
# 使用with,系统会自动调用close方法
# with open('we.txt', 'r') as fe:
# print(fe.read())
# 1.read(num): num表示从文件中读取的数据的长度(单位是字符)
# with open('we.txt', 'r') as f:
# print(f.read(5)) # 最多读取了5个字符
# print('----'*20)
# print(f.read()) # 从上次读取的位置继续读取
# with open('we.txt', 'r') as f:
# print(f'first:\n{f.read(10)}')
# print(f'now, position:\n{f.tell()}')
# f.seek(5, 0)
# print(f'secoend:\n{f.read(5)}')
# 2.tell():文件内的当前位置
# seek方法改变当前文件的位置,(0,0)表示光标移到文件开头;
# seek第一个参数:表示要移动的字节数,
# 第二个参数:指定开始移动字节的位置:(0:将文件的开头作为参考; 1:使用当前的位置作为参考 2:文件的末尾作为参考)
# with open('we.txt', 'r') as f:
# st = f.read(5)
# print('第一次读取的字符串是:', st)
# pos = f.tell()
# print('当前文件位置:', pos)
# pos = f.seek(0, 1) # 定位到开头
# st2 = f.read(10)
# print('第二次读取的字符串是:', st2)
# f2 = open('we.txt', 'r')
# f2.seek(3, 0)
# print(f2.read())
# f2.close()
# 3.小案例 文件复制 把we.txt复制一份
# 1.先把we的内容读取出来
# with open('we.txt', 'r') as f3:
# con = f3.read()
# print(con)
#
# # 2.把读取出来的内容写进新文件中
# name = input('请输入文件名:') + '.txt'
# with open(name, 'w') as f4:
# f4.write(con)
# 4.目录操作
import os
# 重命名
# os.rename('原名', '新名')
# os.rename('we2.txt', 'a.txt')
# 删除
# os.remove('a.txt')
# 创建文件夹
# os.mkdir('zs')
# 删除文件夹
# os.rmdir('zs')
# 获取当前目录
# os.chdir('../') #回到上一级目录
# print(os.getcwd())
# 5.编码格式
# with open('a.txt', 'w', encoding='utf-8') as f:
# f.write('锄禾日当午, 汗滴禾下土')
#
# with open('a.txt', 'r', encoding='utf-8') as f:
# print(f.read())
# 6.读取图片
# rb:以二进制的格式打开一个文件
# wb:以二进制的格式写入一个文件
# with open('1.png', 'rb') as f:
# print(f.read())
# with open('we.txt', 'wb') as f:
# f.write(b'hello') # 开头的b表示这是bytes类型
#
# with open('we.txt', 'rb') as f:
# con = f.read()
# print(con)
# print(type(con))
# st = '九歌'
# print(type(st))
# b = bytes(st, encoding='utf-8')
# print(b)
# print(type(b))
# 7.读取方法
# readline :一次读取一行
# with open('a.txt') as f:
# while True:
# text = f.readline() # 读取一行内容
# # 判断是否读取到内容:
# if not text:
# break
# print(text, end='')
#
# # readlines: 一次性读取,返回的是列表,每一行的数据就是一个元素
# with open('a.txt') as f:
# con2 = f.readlines()
# # print(con2)
#
# # for i in con2:
# # print(i)
#
# s = [i.strip() for i in con2] # strip()可以去除字符串首尾的空格
# print(s)