# -*- encoding: utf-8 -*-
"""
# 文件操作
1、作用:把一些内容(数据)存储起来,让程序下一次执行的时候直接使用,而不必重新制作一份
2、文件的基本操作
   2.1、打开文件:open(name,mode)
                 name: 要打开的文件名(可包含路径)
                 mode: 访问的模式,r 读、 w 写,a 追加
   2.2、读写文件
        2.2.1、写:文件对象.write('data')
        2.2.2、读:文件对象.read(num) --num从文件中读取的数据长度(单位:字节),不填表示读取所有文件数据。
                  文件对象.readlines() --按照行的方式一次性读取所有内容,并返回列表,文件每一行数据为列表的一个元素
                  文件对象.readline() --一次读取文件一行内容
        2.2.3 指针:seek(偏移量,起始位置)
                   起始位置:0--文件开头、1--当前位置、2--结尾
                    偏移量,从其实位置开始进行偏移
   2.3、关闭文件
               文件对象.close()
3、文件备份
4、文件和文件夹的操作:
   要操作文件和文件夹,要借助os模块里面的功能
   import os
   4.1、文件和文件夹重命名:os.rename(old_name,new_name)
   4.2、删除文件:os.remove(filename)
   4.3、删除文件夹:os.rmdir(文件夹名字)
   4.4、创建文件夹:os.mkdir(文件夹名字)
   4.5、获取当前目录:os.getcwd()
   4.6、切换目录:os.chdir(目标目录)
   4.7、获取目录列表:os.listdir(目录) --获取当前目录下所有的文件夹和文件,返回列表数据
"""

# 1、文件的基本操作

'''
# 1.1、打开文件
1、以只读模式(r)打开不存在的文件,报错
   rb: 以二进制的方式打开文件进行读取
   r+: 打开一个文件用于读写,其他与主模式r一样
   文件指针:在文件开头
2、以写入模式(w)打开不存在的文件,创建新文件
   wb: 以二进制的方式打开文件进行写入
   w+: 打开一个文件用于读写,其他与主模式w一样
   文件指针:在文件开头
3、以追加模式(a)打开不存在的文件,创建新文件
   ab: 以二进制的方式打开文件进行追加
   a+: 打开一个文件用于读写,其他与主模式a一样
   文件指针:在文件结尾
'''
# f = open('test.txt', 'r')  # FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
# f = open('test.txt', 'w')  # test.txt不存在,创建新文件
# f = open('test2.txt', 'a')  # test2.txt不存在,创建新文件

# 1.2、读取、写入、追加文件

# 1.2.1、写文件(覆盖写入)
f = open('test.txt', 'w')  # 以写模式访问,f为文件对象名
f.write('abcd')
f.close()  # 关闭文件,不关闭占内存

# 1.2.2、追加(追加写入)
f = open('test.txt', 'a')
f.write('\nappend')  # 不加\n换行追加后test.txt内容为abcdappend
f.close()

# 1.2.3、读取文件
# read()
f = open('test.txt', 'r')
print(f.read())
# abcd
# append
f.close()

f = open('test.txt', 'r')
print(f.read(2))
# ab
f.close()

# readlines()
f = open('test.txt', 'r')
print(f.readlines())   # ['abcd\n', 'append'] 返回列表
f.close()

# readline()
f = open('test.txt', 'r')
print(f.readline())   # abcd
f.close()

# 1.3、移动指针
f = open('test.txt', 'r')
f.seek(0,2)
print(f.read())
f.close()

f = open('test.txt', 'a+')
f.seek(0)
print(f.read())
f.close()
# abcd
# append

# 2、文件备份
# 用户输入aa目录下任意的文件名,程序完成对该文件的备份,备份的文件名为原文件名+[备份]+原后缀
# 2.1、用户输入要备份的文件名
# old_name = input('请输入需要备份的文件名称:')
# # 通过文件名中最后一个.截取文件名和后缀
# index = old_name.rfind('.')
# # 2.4、当用户输入无效文件名如.txt,请用户重新输入
# # 当.所属于的下标大于0,代表后缀前面是有文件名的
# if index > 0:
#     # 2.2、规划备份文件的文件名
#     # new_name = filename+'[备份]'+后缀
#     filename = old_name[:index]
#     postfix = old_name[index:]
#     new_name = filename+'[备份]'+postfix
#     print(new_name)
#     # 2.3、读写文件 --读源文件数据并写入到本份文件
#     f1 = open(old_name, 'r')
#     f2 = open(new_name, 'w')
#     while True:
#         # 读取原文件
#         data = f1.read()
#         # 当读取到的数据为空,即长度为0,跳出循环
#         if len(data) == 0:
#             break
#         # 不清楚文件有多大时,可以循环读取1024个字节的数据写入新文件
#         # 写入备份文件
#         f2.write(data)
#     f1.close()
#     f2.close()
# else:
#     print('输入的文件名称不规范,请重新输入!')


# 4、文件和文件夹的操作
# import os
# 重命名文件名
# os.rename('test1.txt', 't10.txt')
# 删除文件
# os.remove('test1[备份].txt')
# 创建文件夹
# os.mkdir('aa')  # 在当前目录下新建aa文件夹
# os.mkdir('aa/bb')# 在aa目录下新建bb文件夹
# 重命名文件夹
# os.rename('aa', 'a1')
# 删除文件夹
# os.rmdir('a1/bb')# 删除a1目录下的bb文件夹
# 获取当前目录
# a = os.getcwd()
# print(a)  # E:\Program\Python\Study
# # 切换路径
# os.chdir('a1')
# a = os.getcwd()
# print(a)  # E:\Program\Python\Study\a1
# 获取目录列表
# a = os.listdir('aa')
# print(a)  # ['bb', 't1.txt']

'''
# 批量修改文件名,批量新增'Python_',批量删除'Python_'。
1、设置要增加或删除的字符串的标识
2、设置修改后的文件名格式
3、获取批量做修改的路径下的所有文件和文件夹
4、执行修改
'''
import os
flag = int(input('请输入1--文件增加字符,2--文件删除字符:'))
dir = 'aa/'
old_list = os.listdir(dir)
if flag == 1:
    for a in old_list:
        print(a)
        new_nm = 'Python_' + a
        os.rename(dir+a, dir+new_nm)
elif flag == 2:
    for a in old_list:
        new_nm = a[7:]
        os.rename(dir + a, dir + new_nm)