目录
python的常用的模块导入&os路径处理
一、文件操作
1.打开文件open
2.关于文件写入的方法
3.读取图片和视频等文件【以二进制的形式读取】
4.文件的写入操作
5.文件读取的方法
二、上下文管理器with
1.with的用法:会自动关闭文件
三、模块和包
1.模块和包的定义
2.模块的作用
3.引用不同模块的函数【注意文件名不能有中文】
4.模块导入的几种方式
四、魔法变量
1.__name__:内置类属性
2.__file__:当前文件的路径
五、os模块
1.os模块常用的方法
2.获取项目路径的方法
3.扩展:os方法
4.包里面的 __init__.py 的作用
open的常用参数:
第一个:要读取文件名字或者文件路径
第二个参数:文件打开的模式
第三个参数:
encoding :用来指定打开文件的编码格式(使用rb的时候,不需要加该参数)
#打开文件 # 读取同级目录下的文件,可以直接写文件名 f=open("text.txt","r",encoding="utf8") #在同一个文件夹下 # 读取不在同一个目录下的文件,要写上文件的完整路径 f=open(r"D:\python\python\函数的作用域和内置函数homework.py","r",encoding="utf8") #读取内容 content=f.read() # 打印读取出来的内容 print("文件中读取出来的内容:",content) # 关闭文件 f.close()
f=open(r"C:\Users\11694\Desktop\演示用企业与产品资质图片\材料\经营许可证.jpg","rb") #读取内容 content=f.read() # 打印读取出来的内容 print("文件中读取出来的内容:",content) # 关闭文件 f.close()
f=open("text1.txt","a",encoding="utf8") f.write("python1") f.close()
f=open("text1.txt","w",encoding="utf8") f.write("python1") f.close()
例子
#以文件读取的方式去复制一张图片 # 1.打开待复制的文件 f=open(r"C:\Users\11694\Desktop\演示用企业与产品资质图片\材料\经营许可证.jpg","rb") # 2.读取内容 content=f.read() # 3.打开复制的新文件 f2=open(r"bj.jpg","ab") # 4.写入读取出来的内容 f2.write(content) # 5.关闭两个文件 f.close() f2.close()
例子
f = open(r"text1.txt", "r", encoding="utf8") content = f.read(10) # 读取10个字符 print(content) 输出: python1pyt content1 = f.readline() # 每次读取 1 行,接着上一次的继续读取 content2 = f.readline() print(content1) print(content2) 输出: hon1python1python1python1python1python1 1111111111111111111111111111 datas=f.readlines() print(datas) #按行读取所有的内容,每一行作为一个元素,放到一个列表中 输出: ['2222222222222222222222222222222222\n', '333333333333333333333333333333333\n', '444444444444444444444444444444\n', '55555555555555555555555555'] datas=f.readlines() print(datas[1]) #读取第二行 print(repr(datas[1]))#输出可以看到换行符 \n 输出: 333333333333333333333333333333333 '333333333333333333333333333333333\n'
通过with打开文件,会自动带我们关闭文件
with可以开启文件操作的上下文管理器
例子
with open(r"text1.txt", "r", encoding="utf8") as f: content=f.read() print(content)
模块(Moudle):模块是一个python文件,以 .py 结尾,包含了python对象定义和python语句
包(Package):python中的包就是一个包含__int__.py文件的目录(文件夹)
模块导入的时候,同级目录导入,pycharm有可能识别不了,会对代码进行标红(不代表报错)
在进行模块导入的时候会将导入的模块从上到下执行一遍
第一种:导入模板: import 模块名
import 模块名
不能使用import 包名/文件夹
第二种:导入模块中的某个函数或者某个函数的变量:from 模块名 import 变量或函数
from 模块名 import 变量或函数
例子
from learning.pack.login import a,login_func print(a) 输出: 登录 100
第三种:导入的时候给导入的内容起别名 : as
from 模块 import 变量或函数 as 别名
例子
# 给导入的内容取别名 from learning.pack.login import login_func as lg lg() 输出: 登录
第四种:几乎不用也不推荐的导入方式【原因:可读性差】 from 模块 import *
from 模块 import * 导入指定模块种所有的变量和函数
from 文件夹.文件夹 import * 导入指定文件夹中所有的模块
例子
from learning.pack.login import *
使用场景:再进行模块导入的时候,会将导入的模块从上至下执行一遍,如果有一部分代码再导入的时候不希望执行的应该怎么处理
如果直接运行文件(如果文件作为启动文件),那么文件中的__name__的值为__main__
如果文件(模块)被导入,那么文件中的__name__为模块名
【可参考:https://www.runoob.com/note/39287】
代表当前文件的路径
例子
# #这个条件只有在直接运行这个文件的时候才会成立,模块导入的时候改条件不会成立 if __name__=="__main__": print(a) login_func() print(__name__)
os.path.dirname(path):获取 给定文件路径,所在目录路径(获取父级目录)
os.path.join():用来进行路径拼接
os.path.abspath:获取绝对路径的方法
os模块拼接出来的路径如果出现/和\都有的情况(不用管,可以使用
例子:
import os #获取当前文件的路径 path=__file__ print("当前文件的路径",path) # 获取当我文件所在的目录路径 d1_path=os.path.dirname(path) print(d1_path) # 路径拼接方法1 print(d1_path+"/case.txt") # 路径拼接方法2:os模块拼接出来的路径如果出现/和\都有的情况(不用管,可以使用) file=os.path.join(d1_path,"case.txt") print(file) #可以动态获取路径 with open(file,"r",encoding="utf8") as f: content=f.read() print(content)
注意:后面项目实战中获取项目绝对路径的方式
Windows系统中的路径使用的是\
linux系统中的路径使用的是/
base_dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
解析
例子:获取项目路径 # 如何获取项目的路径 import os d1=os.path.dirname(__file__) print(d1) d2=os.path.dirname(d1) print(d2) base_dir=os.path.dirname(d2) print(base_dir) file_path=os.path.join(base_dir,"learning/pack/test01.py") print(file_path) with open(file_path,"r",encoding="utf8") as f: content=f.read() print(content) 输出: D:/python/learning/pack D:/python/learning D:/python D:/python\learning/pack/test01.py 例子: import os #获取Linux下的路径 print(__file__) #获取当前操作系统下的绝对路径的表示方法 print(os.path.abspath(__file__)) 输出: D:/python/learning/pack/test01.py D:\python\learning\pack\test01.py
扩展:https://www.cnblogs.com/nmb-musen/p/10845501.html
os.getcwd() 显示当前的工作路径
os.chdir() 切换工作路径
os.mkdir() 在某个目录下创建一个新目录
os.rmdir() 删除一个目录
os.listdir() 获取当前路径下的目录列表,返回列表格式数据
os.path.isdir() 判断当前文件是否是目录,返回布尔值
os.path.isfile() 判断当前文件是否是文件,返回布尔值
例子
import os res=os.path.isfile(r"D:\python\learning") print(res) 输出: False # 获取当前工作路径,等同于linux下的pwd p1=os.getcwd() print(p1) 输出: D:\python\learning\pack # 切换路径:cd os.chdir("..") print(os.getcwd()) 输出: D:\python\learning # 创建文件夹 os.mkdir("test02") # 删除文件夹 os.rmdir("D:\python\learning\pack\test02") # 获取当前目录下的文件及文件夹的信息:listdir【等同于linux命令ls】 # 默认获取当前工作目录。可以接受一个参数 print(os.listdir(r"D:\python\learning")) 输出:['bj.jpg', 'pack', 'test02', 'text1.txt', '__init__.py', '__pycache__', '操作文件.py']