#文件操作(写入文件,读取文件)
#写入文件
#1.打开文件(打开冰箱)
fp = open('test.txt','w')
print(fp,type(fp))
#2.写入文件(把大象塞进去)
fp.write('什么时候你会觉得不再年轻了?')
#3.关闭文件(关上冰箱)
fp.close()
#读取文件
#1.打开文件(打开冰箱)
fp = open('test.txt','r')
#print(fp)
#2.读取文件(把大象拿出来)
txt = fp.read()
print(txt)
#3.关闭文件(把冰箱门关闭)
fp.close()
#文件常用函数
#open() 打开或者新建一个文件
'''
open('文件路径','打开模式')
#基本模式
w write 写入模式
1.文件不存在则新建文件,文件已存在,打开并且清空文件
2.该模式下只能进行写入操作
r read 读取模式
1.文件不存在则报错,文件已存在则打开文件,将指针指向文件的开头
2.该模式下只能进行读取操作
a append 追加模式
1.文件不存在则新建文件,文件已存在则打开文件,将指针指向文件结尾
2.该模式下只能进行写入操作
x xor 异或模式
1.文件已存在则报错,文件不存在则新建文件
2.该模式下只能进行写入操作
#扩展模式(不能单独使用必须和基本模式一起用)
+ plus 增强模式
可以使得任何基本模式变成读写模式
b bytes 位模式
获取数据或者写入数据的类型为bytes类型
'''
#增强模式
fp = open('wangwang.txt','w+')
#写入操作
fp.write('四处张望')
#将指针设置为开头位置
fp.seek(0)
#读取操作
result = fp.read()
print(result)
fp.close()
#bytes模式 涉及到一个bytes的数据类型
content = '喵星人为啥不能作为警猫呢?'
result = content.encode()#编码操作
print(result)
fp = open('miaomiao.txt','wb')
fp.write(result)
fp.close()
fp = open('miaomiao.txt','rb')
result = fp.read()
print(result.decode())#解码操作
fp.close()
#read() 读取文件内容
fp = open('miaomiao.txt','r')
#读取所有内容
#txt = fp.read()
#读取指定个数的字符
txt = fp.read(5)
print(txt)
fp.close()
#write() 写入文件内容
fp = open('miaomiao.txt','w')
fp.write('kqkyhtk')
fp.close()
#readline() 一次读取一行数据
fp = open('question','r')
result = fp.readline()
result = fp.readline()
#读取一行数据的前n个字符
result = fp.readline(5)
print(result)
fp.close()
#readlines() 一次性将文件按行读取到列表当中取
fp = open('question','r')
#读取所有行
result = fp.readlines()
#根据指定的字符长度 读取n行
result = fp.readlines(50)
print(result)
fp.close()
#writelines() 将容器中的数据一次性写入文件
'''
txt = ['一
','二
','三
','四
'
fp = open('num.txt','w')
fp.writelines(txt)
fp.close()
'''
#truncate() 文件截取操作
#fp = open('num.txt','a')
#这里的长度单位不是字符而是字节
#fp.truncate(2)
#fp.close()
'''
字符:一个独立存在的文字就是一个字符,无论什么语言什么符号
字节:用于存储数据的基本单位
1TB = 1024GB
1GB = 1024MB
1MB = 1024KB
1KB = 1024B
1B = 8bytes
字符集:
基本的英文编码(1个字节)
ascii码 -> 记录英文和数字及部分符号的编码 (128个)
扩展ascii码 -> 增加了ascii码的数量(256个)
制作特定语言的编码(2个字节[针对汉字])
gb2312编码 -> 存储了5000个常用汉字
gb10800编码-> 扩充了汉字数量
gbk编码 -> 包含了所有汉字
big5编码 -> 繁体中文编码
制作世界统一编码(3个字节[针对汉字])
utf-8 包含世界上绝大部分的文字的编码
utf-16 包含世界上绝大部分的文字的编码
'''
#文件函数
'''
#tell() 获取文件指针的位置(字节)
fp = open('01.txt','r')
#输出当前指针位置
pos1 = fp.tell()
print(pos1)
#读取内容
result = fp.read()
print(result)
#输出当前指针位置
pos2 = fp.tell()
print(pos2)
fp.close()
'''
#seek() 移动文件指针的位置
fp = open('01.txt','r')
#获取开始文件指针位置
print(fp.tell)
#移动指针
fp.seek(9)
#获取开始文件指针位置
print(fp.tell())
#读取文件
result = fp.read()
print(result)
fp.close()
#shutil模块 高级文件处理模块
import shutil
#copy() 复制文件
#result = shutil.copy('/home/sy/下载/001','/home/sy/文档/002')
#print(result)
#copy2() 复制文件,保留原有数据信息
#result = shutil.copy2('/home/sy/下载/001','/home/sy/文档/003')
#print(result)
#copyfileobj() 将一个文件的内容拷贝到另一个文件当中
#result = shutil.copyfileobj(open('01.txt','r')),open('02.txt','a')
#print(result)
#copyfile() 将一个文件的内容拷贝到另一个文件当中 copyfileobj(open(,'r'),open(,'w'))
#result = shutil.copyfile('01.txt','02.txt')
#print(result)
#copytree() 复制整个目录
#result = shutil.copytree('/home/sy/PycharmProjects/python3/11.9','/home/sy/my11.9')
#print(result)
#copymode() 拷贝权限
#result = shutil.copymode('/home/sy/文档/canzhao','/home/sy/文档/mode')
#print(result)
#copystat() 拷贝元数据
#result = shutil.copystat('/home/sy/文档/002','/home/sy/文档/stat')
#print(result)
#rmtree() 删除整个目录
#result = shutil.rmtree('/home/sy/下载/py)
#move() 移动文件或者目录
#result = shutil.move('/home/sy/下载/001','/home/sy/文档/001')
#result = shutil.move()
#which() 检测命令文件所在的文件夹
#result = shutil.which('reboot')
#print(result)
#disk_usage() 查看磁盘使用量
result = shutil.disk_usage('/')
print(result)
#make_archive() 制作归档文件(将指定的文件夹归档成一个文件)
#result = shutil.make_archive('/home/sy/下载/guidang','zip','/home/sy/PycharmProjects')
#print(result)
#unpack_archive() 解包归档文件
#result = shutil.unpack_archive('/home/sy/下载/myguidang.zip','/home/sy/文档')
#print(result)
#get_archive_formats() 获取归档允许使用的类型
#result = shutil.get_archive_formats()
#print(result)
#get_unpack_formats() 获取系统解包的文件类型(包含类型对应的后缀)
#result = shutil.get_unpack_formats()
#print(result)
压缩与解压
#zip模块
import zipfile
'''
#压缩操作
#1.创建压缩文件
zp = zipfile.ZipFile('./11.6.zip','w',zipfile.ZIP_STORED,True)
#print(zp)
#2.向压缩文件中添加内容
#zp.write('/home/sy/文档/001','001')
#zp.write('/home/sy/文档/002','00-2')
zp.write('./getdirsize.py','mydir/gdp.py')
#3.关闭压缩文件
zp.close()
'''
#解压缩文件
#1.打开压缩文件
zp = zipfile.ZipFile('./11.6.zip','r')
print(zp)
#2.解压操作
#指定文件
#zp.extract('00-2','/home/sy/下载')
#全部文件
#zp.extractall('./boys')
#3.关闭文件
zp.close()
#tar模块
import tarfile
'''
#1.打开压缩文件
tp = tarfile.open('./07.tar','w:bz2')
print(tp)
#2.添加内容 压缩文件
tp.add('01.py',arcname= '1.py')
tp.add('02.py',arcname= '2.py')
tp.add('01.txt',arcname= 'txt/1.txt')
#3.关闭压缩文件
tp.close()
'''
#解压操作
#1.打开压缩文件
tp = tarfile.open('07.tar','r')
#2.解压文件
#解压所有文件
#tp.extractall('./girls')
#解压指定文件
tp.extract('1.py','/home/sy')
#3.关闭压缩文件
tp.close()