Python基础10
一、文件的基本操作
1.打开,读取和关闭
-
r:只读
-
w:只写,文件不存在时新建并写入,文件存在就直接重写
-
close():关闭文件
这是绝对路径 不常用
f = open(r"C:\Users\Administrator\Desktop\yq.txt", "r", encoding="utf-8") # 文件的打开
print(f.read()) # 文件的读取
f.close() # 文件的关闭
#相对路径 复制到pyCharm里面 反手键里面的paste
#常用这种方法
f = open("yq.txt", "r", encoding="utf-8")
print(f.read())
f.close()
#写入文件 W
#没有的话新建有的话就改写
f = open("yq1.txt", "w", encoding="utf-8")
f.write("原擎\n")
f.writelines(["原擎\n", "2"]) #这个方法可以写入列表 但是必须是字符串
f.close()
用with更保险以后用这种方法
#文件的打开
with open("yq1.txt", "r", encoding="utf-8") as f:
print(f.read())
#文件的写入
with open("yq1.txt", "w", encoding="utf-8") as f:
f.write("靳莉\n")
f.writelines("爱\n")
f.writelines(["你好", "2", "3"])
2、tell()、seek()
-
tell():以bytes为单位,从文件头到当前指针的位置
-
seek():以bytes为单位,指针的偏移量
with open("yq1.txt", "r", encoding="utf-8") as f:
print(f.tell())
print(f.read())
print(f.tell())
print(f.read())
f.seek(0)
print(f.tell())
f.seek(2)
print(f.tell())
print(f.read()) # 会报错 因为一个中文utf-8是三个字节,移动两个字节,字被拆开了
3、rb和wb
rb和wb,只读和只写,非文本的读取和写入
img = ""
with open("联系方式.png", "rb") as f:
img = f.read()
with open("联系方式.png", "wb") as f:
f.write(img)
4、a追加
在文件末尾增加
# 文件不存在,新建,在写入
with open("yq2.txt", "a", encoding="utf-8") as f:
f.write("haha")
# 文件存在,在文件末尾增加
with open("yq.txt", "a", encoding="utf-8") as f:
f.write("追加")
5、读写
-
r+:读写,指针在文件开头
-
w+:读写,不存在新建,存在覆盖
-
a+:读写,不存在新建,存在文件末尾追加
read():光标到文件末尾
readline():读一行,字符串 常用这个
readlines():列表。[“第一行”,“第二行”…]
#read() # 光标到文件末尾
with open("yq2.txt", "r", encoding="utf-8") as f:
file = f.read()
print(file.strip()) # 去空格 以后用
print(type(file)) #str 格式
#读取光标到文件末尾
#readline() # 读一行,字符串 常用这个
with open("yq2.txt", "r", encoding="utf-8") as f:
file = f.readline()
print(file)
print(type(file)) # 只读取一行
# 想要读取全部
with open("yq2.txt", "r", encoding="utf-8") as f:
file = f.readline()
print(type(file))
while file:
print(file.strip())
file = f.readline()
# 这样做的最大好处是节约内存
readlines() # 列表。["第一行","第二行".......]
with open("yq2.txt", "r", encoding="utf-8") as f:
file = f.readlines()
print(file)
print(type(file)) #读取全部但是是列表
6、上下文管理
from datetime import datetime # 导入模块
class Runtime:
def __enter__(self): # 程序开始时执行
self.start_time = datetime.now() # 获取开始的时间
print("程序开始运行的时间:{}".format(self.start_time))
def __exit__(self, exc_type, exc_val, exc_tb): # 程序结束时执行
self.end_time = datetime.now() # 获取结束时的时间
print("程序结束运行的时间:{}".format(self.end_time))
print("程序运行的时间:{}".format(self.end_time - self.start_time))
run = Runtime()
with run as a: # 上下文管理器
for i in range(10000000):
type("helloTZ")
# 程序开始运行的时间:2019-09-14 12:25:56.572000
# 程序结束运行的时间:2019-09-14 12:25:57.788000
# 程序运行的时间:0:00:01.216000
二、io流
io流其实就是输入输出
1、StringIO :字符流
import io
sio = io.StringIO() # 实例化,创建了一个对象,进行保存读取
sio.write("hello") # 写入
print(sio.getvalue()) # 读取
sio.close() # 关闭
2、BytesIO:字节流
bio = io.BytesIO() # 同上
bio.write(b'abcd')
print(type(b'abcd')) # <class 'bytes'> 字节
print(bio.getvalue())
bio.close()
三、os模块
python和操作系统进行交互的模块
import os # 实现linux系统操作
os.system("pwd") # 需连接虚拟机
#最常用的路径拼接
urli = os.path.join('home', 'pyvip', 'project')
print(urli)
# 创建文件夹,如果已经存在会报错
os.mkdir('test')
# 改文件夹名字
os.rename('test', 'test1')
四、shutil模块
高级文件操作
import shutil
# 将文件移动到目标文件夹
shutil.move('文件名‘, ’文件夹名‘) # 相对路径
shutil.move(r'文件路径’, r‘文件夹路径’) # 绝对路径
#复制
shutil.copytree(r'文件路径‘, ’文件路径‘) # 移动复制
#删除
shtil.rmtree(r'文件路径’)