'''
模式:常用的为r、w、a
   r: 只读     ;光标在开头  r+:读写      光标在开头  rb:二进制读取  rb+
   w: 覆盖写入 ;光标在开头  W+:覆盖读写   光标在开头  WB:二进制覆盖  WB+
   a: 追加写入 ;光标在末尾  a+: 读写      光标在末尾   ab:二进制追加  ab+
'''
# read() 以只读的方式打开文件,编码为utf-8,光标默认在起始位置
# close()  关闭文件
f = open("./demo.txt", "r", encoding="utf-8")
# read()读取文件所有内容
content = f.read()
print(content)

# ./ 为相对路径
f = open("./demo.txt", "r", encoding="utf-8")
# readlines 读取文件所有内容,并以列表形式展示,每一行内容为一个元素
# readline  读取第一行文件内容
content = f.readlines()
print(content)

# seek()  作用:用来移动文件指针
# 语法:文件对象.seek(偏移量,起始位置)
# 偏移量:英文字母1个偏移量,中文汉字3个偏移量,
# \n 2个偏移量,英文标点符号1个偏移量,中文标点符号3个偏移量
# 起始位置: 0:文件开头 1:当前位置 2:文件末尾

f = open("./demo.txt", "r", encoding="utf-8")
f.seek(9, 0)
content = f.read()
print(content)

# write() 覆盖写入
f = open("./demo2.txt", "w", encoding="utf-8")
f.write("张员外")
f.close()

f = open("./dem3.txt", "a", encoding="utf-8")
f.write("明天下午擦玻璃")
f.close()

# 上下文管理器  with....as.... 操作完成后,自动关闭当前文件
with open("./dem3.txt", "a", encoding="utf-8") as f:
    f.write(",周六安排全屋保洁")

# r+ read()从开头开始按写入内容覆盖
# r+ readlines()从末尾追加
with open("./demo.txt", "r+", encoding="utf-8") as f:
    f.write("小学生")
    content = f.read()
    print(content)

# w+ 完全覆盖所有内容,并新增
with open("./demo.txt", "w+", encoding="utf-8") as f:
    f.write("小学生必背古诗词")
    content = f.read()
    print(content)

# a+ 从末尾新增
with open("./demo.txt", "a+", encoding="utf-8") as f:
    f.write("小学生必背古诗词")
    content = f.read()
    print(content)

# 绝对路径
with open("J:\\python_basics\\课件笔记\\demo.txt", "a+", encoding="utf-8") as f:
    f.write("小学生必背古诗词")
    content = f.read()
    print(content)

# 文件备份的操作
# 输入旧文件名称
old_name = input("请输入文件名:")
# 从最右侧开始提取第一个"."符号索引值
index = old_name.rindex(".")
# 组织新文件名称,xxx + 备份 + 后缀
new_name = old_name[:index] + "备份" + old_name[index:]
# 只读模式打开old_name文件
old_f = open(f"{old_name}", "r", encoding="utf-8")
# 追加写入模式打开new_name文件
new_f = open(f"{new_name}", "a", encoding="utf-8")

while True:
    # 读取old_name所有文件,赋值给变量
    content = old_f.read()
    # 所有文件读取完之后,停止读取
    if len(content) == 0:
        break
    # 把变量的内容写入打开的new_name
    new_f.write(content)
# 关闭所有文件
old_f.close()
new_f.close()

# 文件和文件夹的操作
# 在Python中对文件和文件夹的操作需要导入os模块
# 导入os模块

import os

# 文件重命名
os.rename("目标文件名", "新文件名")
# 删除文件
os.remove("目标文件名")
# 创建文件夹
os.mkdir("文件夹名字")
# 删除文件夹
os.rmdir("文件夹名字")
# 获取当前目录
os.getcwd()
# 获取当前文件所在目录
print(os.getcwd())
# 改变默认目录
os.chdir()
# 获取目录列表
os.listdir()

练习:

1.写一首诗,放到一个txt文件里

2.删除第二句诗