Python的常用的模块导入&os路径处理

Python的常用的模块导入&os路径处理

目录

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 的作用


一、文件操作

1.打开文件open

open的常用参数:

第一个:要读取文件名字或者文件路径

第二个参数:文件打开的模式

  • r:只读模式,如果打开的文件不存在,会报错
  • rd:只读模式,以二进制的编码格式去打开文件,如果打开的文件不存在,不会报错(会自动创建一个)
  • a:追加写入,以写入的模式打开文件,如果打开的文件不存在,不会报错(会自动创建一个)
  • ab:追加写入,以写入的模式打开文件,如果打开的文件不存在,不会报错(会自动创建一个),二进制格式编码格式去打开文件
  • w:覆盖原文件内容,以写入的模式打开文件,如果打开的文件不存在,不会报错(会自动创建一个)
  • wb:覆盖原文件内容,以写入的模式打开文件,如果打开的文件不存在,不会报错(会自动创建一个),二进制格式编码格式去打开文件
  • 注意点:a,ab,w,wb只能写入,不能读取内容

第三个参数:

encoding :用来指定打开文件的编码格式(使用rb的时候,不需要加该参数)

2.关于文件写入的方法

  • 打开文件open(文件路径,打开文件的模式,文件编码)
  • 读取文件内容read()
  • 关闭文件close()
#打开文件
# 读取同级目录下的文件,可以直接写文件名
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()

3.读取图片和视频等文件【以二进制的形式读取】

f=open(r"C:\Users\11694\Desktop\演示用企业与产品资质图片\材料\经营许可证.jpg","rb")

#读取内容
content=f.read()

# 打印读取出来的内容
print("文件中读取出来的内容:",content)

# 关闭文件
f.close()

4.文件的写入操作

  • 以追加的形式写入
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()

5.文件读取的方法

  • read:读取文件中的所有内容,该方法可以通过参数取指定读取内容的大小
  • readline:每次读取一行内容
  • readlines:按行读取所有的内容,每一行作为一个元素,放到一个列表中

例子

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

1.with的用法:会自动关闭文件

通过with打开文件,会自动带我们关闭文件

with可以开启文件操作的上下文管理器

例子

with open(r"text1.txt", "r", encoding="utf8") as f:
    content=f.read()
    print(content)

三、模块和包

1.模块和包的定义

模块(Moudle):模块是一个python文件,以 .py 结尾,包含了python对象定义和python语句

包(Package):python中的包就是一个包含__int__.py文件的目录(文件夹)

2.模块的作用

  • 模块让你能够有逻辑地组织你的python代码段
  • 把相关的功能代码写到一个模块里能让你的代码好用,更易懂
  • 模块定义函数,类和变量,模块里也能包含可执行的代码

模块导入的时候,同级目录导入,pycharm有可能识别不了,会对代码进行标红(不代表报错)

在进行模块导入的时候会将导入的模块从上到下执行一遍

3.引用不同模块的函数【注意文件名不能有中文】

  • 同级目录可以直接使用import:例子:import register
  •  从项目目录下,一级一级往下导入  from learning.pack import register

4.模块导入的几种方式

第一种:导入模板: 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 *

四、魔法变量

使用场景:再进行模块导入的时候,会将导入的模块从上至下执行一遍,如果有一部分代码再导入的时候不希望执行的应该怎么处理

1.__name__:内置类属性

如果直接运行文件(如果文件作为启动文件),那么文件中的__name__的值为__main__

如果文件(模块)被导入,那么文件中的__name__为模块名

【可参考:https://www.runoob.com/note/39287

2.__file__:当前文件的路径

代表当前文件的路径

例子

# #这个条件只有在直接运行这个文件的时候才会成立,模块导入的时候改条件不会成立
if __name__=="__main__":
    print(a)
    login_func()
    print(__name__)

五、os模块

1.os模块常用的方法

os.path.dirname(path):获取 给定文件路径,所在目录路径(获取父级目录)

os.path.join():用来进行路径拼接

os.path.abspath:获取绝对路径的方法

os模块拼接出来的路径如果出现/和\都有的情况(不用管,可以使用

例子:

  • 获取当前文件路径__file__
  • 获取文件所在目录os.path.dirname
  • 文件路径拼接os.path.join
  • 动态获取路径

 

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)

 

2.获取项目路径的方法

注意:后面项目实战中获取项目绝对路径的方式

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

 

3.扩展:os方法

扩展: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']

 

4.包里面的 __init__.py 的作用

  • __init__.py的第一个作用就是package的标识,如果没有该文件,该目录就不会认为是package。
  • 定义__all__用来模糊导入
  • 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值