14 文件操作

文件处理
在 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)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值