# encoding: utf-8
import os
import shutil
# ************************************************
# 文件的操作模式
#
#
# r 只读,文件不存在时不能自动创建
# w 只写,文件不存在时可以自动创建
# a 追写,文件不存在时可以自动创建
# rb, wb, ab 二进制格式进行操作(图片视频音乐)
# r+, w+, a+, rb+, wb+, ab+, 以读写模式进行操作
# ************************************************
# f.tell() 当前指针位置
#
#
# 定位 f.seek(偏移量, [0, 1, 2])
#
# 0: 开头(默认)
# 1: 当前位置
# 2: 文件结尾
# 文本文件只能写 0
# ************************************************
# f.read(字节数) 字节数默认是文件内容长度,下标自动后移
# f.readline([limit]) 读取一行数据,limit:限制的最大字节数
# f.readlines() 会自动的将文件按换行符进行处理,将处理好的每一行组成一个列表返回
#
#
# 文件较大时,采取readline方法,节省内存,但性能较低
# 文件较小时,可采用read方法和readlines方法,占用内存,但性能较高
# ************************************************
# 遍历
#
#
# 可以直接遍历f本身
# 也可以遍历行列表
f = open('a.text', 'r')
for i in f:
print(i, end="")
if f.readable():
content = f.readlines()
for i in content:
print(i, end="")
f.close()
# ************************************************
# 文件关闭
#
#
# 可以释放系统资源
# 会立即清空缓冲区的数据内容到磁盘文件
#
#
# f.close()
# f.flush()
# ************************************************
# 文件操作:重命名
os.rename('a.text', 'b.text')
os.renames('one/a.text', 'two/b.text')
# ************************************************
# 文件操作:删除
#
#
# os.remove(path) 删除文件,文件不存在报错
# os.rmdir(path) 删除文件夹,文件夹非空报错
# os.removedirs(path) 递归删除文件夹,文件夹非空报错
# ************************************************
# 文件操作:创建文件夹
#
#
# os.mkdir(path[, mode]) mode:数字模式权限
# ************************************************
# 文件操作:目录操作
#
#
# os.getcwd() 获取当前目录
# os.chdir(path) 改变默认目录
# os.listdir(path) 获取目录内容列表
# os.listdir('./') 获取当前目录内容列表
# os.listdir('../') 获取当前目录的上级目录内容列表
# ************************************************文件复制************************************************
# 跳转到文件操作目录
os.chdir("files")
# 只读模式打开源文件
# 追写模式打开目标文件
src_file = open("a.text", "r", encoding="utf-8")
dst_file = open("b.text", "a", encoding="utf-8")
# 从源文件中读取内容写入到目标文件中(按大文件处理)
while True:
content = src_file.read(1024)
if len(content) == 0:
break
dst_file.write(content)
# 关闭源文件和目标文件
src_file.close()
dst_file.close()
# ************************************************文件分类************************************************
# 将files文件夹下面的文件按格式进行分类
if not os.path.exists("files"):
exit()
os.chdir("files")
# 获取文件列表
file_list = os.listdir("./")
for file_name in file_list:
index = file_name.rfind(".")
if index == -1:
continue
# 获取文件格式名
format_name = file_name[index + 1:]
if not os.path.exists(format_name):
os.mkdir(format_name)
# 移动文件至对应格式文件夹中
shutil.move(file_name, format_name)
# ************************************************文件清单************************************************
# 列举files文件夹下的所有文件
def list_files(dir):
file_list = os.listdir(dir)
for file_name in file_list:
new_fileName = dir + "/" + file_name
if os.path.isdir(new_fileName):
print(new_fileName)
list_files(new_fileName)
else:
print(file_name)