list
os模块
os.path模块
文件操作
os模块 sys解析命令行参数(去学习)
import os
执行系统命令
os.system(命令)
res = os.name #nt 表示的是windows posix 表示Linux UNIX Mac
print(res)
# res = os.uname() #操作系统的信息 windows报错
# print(res)
# 获取当前路径
res = os.curdir
print(res)
# 获取当前路径的绝对表示
res = os.getcwd()
print(res)
# 用来修改当所在的一个位置
res = os.chdir("D:\MyDownloads")
print(os.getcwd())
# 创建目录
# res = os.mkdir(r"E:\工作目录\基础阶段\day10\资料\test")
# print(res)
# 创建目录 如果父级目录不存在 那么也会被创建
# os.makedirs(r"E:\工作目录\基础阶段\day10\资料\test\a\b")
# 删除目录(只能删除空目录)
# os.rmdir(r"E:\工作目录\基础阶段\day10\资料\test\a\b")
#
# os.removedirs(r"E:\工作目录\基础阶段\day10\资料\test\a")
# 重命名目录
# os.rename(r"E:\工作目录\基础阶段\day10\资料\test\a\b", r"E:\工作目录\基础阶段\day10\资料\test\a\bb")
# 重命名文件(注意:要写绝对路径)
# os.rename(r"E:\工作目录\基础阶段\day10\资料\test\a\s.txt", r"E:\工作目录\基础阶段\day10\资料\test\a\s.py")
#创建文件(windows报错)
# os.mknod(r"index.txt")
# os.mknod("t.txt")
# 或者使用open
# open(r"E:\工作目录\基础阶段\day10\资料\test\a\s.txt", "w")
# 删除文件
# os.remove(r"E:\工作目录\基础阶段\day10\资料\test\a\s.txt")
# 获取某个目录下的文件或者目录的名字
res = os.listdir(r"E:\工作目录\基础阶段\day09\视频")
# print(res)
# 获取文件的信息
res = os.stat(r"E:\工作目录\基础阶段\day10\资料\test\a\s.py")
print(res)
# 获取环境变量
res = os.environ
print(res.get("path"))
os的path操作(比较重要)
from os import path as p
# 判断是不是文件
res = p.isfile(r"E:\工作目录\基础阶段\day10\资料\test\a")
print(res)
# 判断文件或目录是否存在
res = p.exists(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)
res = p.abspath("666.txt")
print(res)
# print(__file__)
# 当前程序的绝对路径
print(p.abspath(__file__))
# 获取目录末尾的文件名字
res = p.basename(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)
# 获取当前程序运行文件的文件名字
current_file_name = p.basename(__file__)
print(current_file_name)
# 获取目录
res = p.dirname(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)
# 获取当前程序运行文件的所属目录
print(p.dirname(__file__))
# 切分路径 得到是元组
res = p.split(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)
res = p.split(r"E:\工作目录\基础阶段\day10\资料\test\a")
print(res)
# 切分文件的后缀 如果给出的是目录 那么切分得到元组 第二项是空
res = p.splitext(r"E:\工作目录\基础阶段\day10\资料\test\a")
print(res)
print(p.splitext(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt"))
# 路径拼接
res = p.join(r"E:\工作目录\基础阶段\day10\资料", "999.txt")
print(res)
print(p.exists(res))
# 在运行文件的同级 创建一个index.py文件
# 先确定程序运行路径
my_dir = p.dirname(__file__)
# 拼接文件的绝对路径
file_path = p.join(my_dir, "index.py")
# 使用open
# open(file_path, "w")
# print(file_path.isdir)
# 判断一个是不是目录
res = p.isdir(file_path)
print(res)
# 获得文件大小
res = p.getsize(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)
文件操作(读 写)
输入输出(io流)
参考物:程序(文件)
输入:将内容或数据 写入到文件的过程 input raw_input
输出:从文件或程序 读出内容 print()
文件读操作
我们要操作文件 必须要先打开文件
open函数(文件路径,打开模式)
打开模式
w 只写模式 如果文件不存在 就创建 如果存在 将会覆盖掉原来的所有内容
a 追加模式 如果文件不存在 就创建 如果存在 在其文件末尾继续填入新的内容
r (read) 只读模式 如果不存在就报错
x 写入模式 但是如果文件存在 那么保存
w+ r+ a+ x+ 读写模式
wb 写二进制数据
rb 读二进制数据
ab 追加二进制数据
二进制方式保存写入数据例子:图片 音频文件 视频文件
read函数
如果参数不写 那么就把文件全都读取出来,如果是给了数字 那就读取规定个数的字符
注意:程序不能处理外部垃圾,也就意味着文件句柄 使用完毕以后需要手动关闭,python自动关闭文件不稳定
我们最好自己手动去关闭(close) 养成一个好习惯
文件句柄.closed 来判断是不是已经被关闭了
如果不想写close 可以使用with open() as 句柄这样的形式 示例如下
with open("lal.txt", "r") as f2, open("lal.txt", "rb") as f4:
print(f2.read())
print(f4.read(2).decode("gbk"))
文件指针
read读取以后 文件指针向下移动 不会自己跑到文件的开始
tell 获取当前指针位置
seek 移动文件指针
如果写的是seek(0) 回到文件的头
如果写了两个参数(偏移量(默认是向右,输过是负数 就向左移动), 参考位置(0表文件头 1表当前位置,2文件的末尾))
readline(limit)函数
默认是读取一行,当我们指定limit参数值后 他就读取该行的最多limit个内容
写操作
先打开文件 打开模式就要写有关系了 w wb w+ a x
write(字符)
writelines(序列)
with open("heheda.txt", "w") as f1:
f1.write("再带你们一周!!!")
# with open("append.txt", "a") as f2:
# f2.write("需要发票!!!滴滴的也行\nuuuuu")
#
f3 = open("new.txt", "a+")
data = ["新诗\n", "你是我永远都不想修复的bug\n", "爱你就是个死循环\n"]
f3.writelines(data)
f3.close()
循环读取
解决文件过大 不能一次读取的问题
import os
path = r"E:\工作目录\基础阶段\day10\资料\作业\youbian.txt"
f1 = open(path, "r", encoding="utf-8")
has_read = 0
# 获取文件大小
file_size = os.path.getsize(path)
READ_NUM = 100
while has_read < file_size:
res = f1.read(READ_NUM)
# print(res)
if len(res) <= 0:
pass
else:
print(res)
has_read += READ_NUM
复制文件
复制的是数据:将一个文件的内容读取出来然后 写入新的文件
解归档
把我们程序里面的数据结构 完整保存到我们文件里
以及读取
使用pickle包
import pickle
a = {"hehe": "88", "age":12}
# 归档
# my_file = open("my_pickle.txt", "wb")
# pickle.dump(a, my_file)
# 解档
my_file = open("my_pickle.txt", "rb")
res = pickle.load(my_file)
print(res, type(res))
my_file.close()
网友评论