# 文件操作
#打开,关闭文件(open,close)
#分路径,相对路径,绝对路径
#相对路径 9.文件操作.txt 在当前使用的路径下寻找改文件
#绝对路径 C:\Users\ASUS\Desktop\py笔记\9.文件操作.txt
#r 以只读方式打开,文件指针默认放在文件开头
#r+ 打开一个文件用于读写,指针放于开头
#w 以只写形式打开,文件存在则覆盖,不存在则创建
#w+ 打开一个文件用于读写,文件存在则覆盖,不存在则创建
#a 以追加形式打开文件,指针在文件结尾,不存在则创建新文件
#a+ 打开一个文件用于读写,指针在文件结尾,不存在则创建新文件
#后加b代表以二进制格式打开文件-》音频,图片,视频是以二进制方式打开的
#文本模式,是以str进行
## 方法
f.read() 读取指定大小的内容
f.readline() 读取一行内容
f.readlines() 读取多行内容
f.write(data) 写入内容
f.writelines(lines) 写入多行内容,需要自己加换行符
f.flush() 立即刷新缓冲
f.tell() 获得指针位置
f.seek(positon) 调整指针位置 0为初始位
a=r'C:\Users\ASUS\Desktop\py'
b=r'\9.文件操作.txt'
fp=open(a+b,'r')
print(fp.read())
fp.seek(1)#->调整指针位置
print(fp.readline())
print(fp.readlines())
fp.close()
fp=open(a+b,'w+')
fp.write('hello\nop')
## 文件存到内存当中 临时存放东西的 重启后内存中的数据消失不见
import io
myio=io.StringIO()
myio.write('hello')
print(myio.getvalue())
print(myio.getvalue())#可重复读取数据
myio.close()#关闭,清除数据
# print(myio.getvalue())#关闭后无法读取
#二进制数据
myio=io.BytesIO()
myio.write('hello'.encode())
print(myio.getvalue())
## 上下文管理
with open(a+b,'r+') as f:#自动关闭文件
# f.write('hello nihao')
f.seek(0)
print(f.read())
with open(a+b,'r+') as fp,\
open(a+r'\o.txt','w+',encoding='utf-8') as fp1:
fp.write('nihao')
fp1.write('hello')
# fp.flush()
fp.seek(0)
print(fp.read())
print(fp1.read())
__enter__和 __exit__
__enter__ 进入的时候自动调用 在使用with as内代码前调用
__exit__ 退出的时候自动调用 with as里面的代码执行完后调用
class A:
def __enter__(self):
print("进入的时候自动调用 使用with as内代码")
fp=open(a+r'\9.文件操作.txt','r')
print(fp.read())
return fp#with as 设定的指针
def __exit__(self, exc_type, exc_val, exc_tb):
print('退出的时候自动调用 with as 里面的代码执行完')
fp.close()#这里的指针名对应with as的指针
# H=A()
with A() as fp:
print(1111)
## 两个常用参数
#errors=ignore->忽略错误输出,出错忽略
#encoding=什么编码格式
# with open(a+r'\9.文件操作.txt','r',encoding='ASCII',errors='ignore') as f:
# print(f.read())
## os 文件和目录(文件夹)
#import os
#print(os.getcwd())#显示当前路径
#print(os.listdir(r'C:\Users\ASUS\PycharmProjects\untitled2\venv'))#显示当前路径下的所有文件
#os.chdir()#改变当前路径
#os.mdikr(r'D:\aaa')#创建一个新文件夹aaa
#os.rmdir(r'D:\aaa')#删除该文件
#os.remove(r'文件地址')#删除指定路径下的文件
#os.rename('a.txt','aa.txt')#文件名替换
#解释器在Windows上面可以使用Windows命令,如果在linux上面就可以使用linux命令
#当我吗用open w的方式创建文件时,如果解释器在linux上 文件就在Linux上,本地不会有
#os.system()
### os.path模块
#os.path.join(r'C:\','wer\ty\op.txt')#路径拼接
#os.path.relpath(r'a.txt')#查相对路径
#os.path.abspath(r'a.txt')#查绝对路径
#os.path.isabs()#是否为绝对路径