内置模块之os、sys模块
os与sys模块的区别
- os模块主要与操作系统打交道
- sys模块主要与python解释器打交道
os模块
os模块主要用于对接我们的操作系统。
os模块主要有以下功能,这些功能都需要导入os模块使用。
import os
语句 | 功能 |
---|---|
os.mkdir()\os.makedirs | 创建目录\多级目录 |
os.rmdir()\os.removedirs() | 删除目录\多级目录(空目录) |
os.listdir()\os.listdir('路径') | 查看执行\指定文件夹下的内容名称 |
os.rename() | 重命名 |
os.remove() | 删除文件 |
os.getcwd() | 获取当前工作目录 |
os.chdir() | 切换工作目录 |
os.path.abspath() | 获取文件的绝对路径 |
os.path.dirname() | 获取文件所在的文件夹路径 |
os.path.exists()\isfile()\isdir() | 判断文件路径\文件\文件夹是否存在 |
os.path.join() | 路径拼接 |
os.path.getsize() | 获取文件大小(字节为单位) |
创建目录
# 创建单级目录
os.mkdir('d1') # 相对路径建目录(文件夹),在执行文件所在路径下创建目录
os.mkdir(r'd1\d2\d3') # 运行失败,不可以创建多级目录,仅可创建单级目录
os.mkdir('d1\d2') # 在d1已创建的情况下,可以通过相对路径在d1下创建d2
# 创建多级目录
os.makedirs(r'd1\d2\d3') # 可以创建多级目录
os.makedirs(r'd11') # 也可以创建单级目录
删除目录
# 删除单级目录
os.rmdir(r'd1\d2\d3') # d3被删除,只要输入相对路径,会将末梢最底层的文件夹作为删除对象
os.removedirs(r'd1') # 报错,因为d1内还有d2文件夹,而os模块只能删空目录
os.removedirs(r'd1\d2') # d2是空的,删完后d1也空,所以d1也被删,删除了多级目录
查看文件夹下的内容
print(os.listdir()) # 查看执行文件所在文件夹的内容,返回列表,显示所有文件名
print(os.listdir('d1')) # 查看指定文件夹的内容,可以是相对路径或者绝对路径
重命名\移动路径
os.rename(r'd1\d2', r'd1\d3') # 将d2文件夹名改为d3
os.rename(r'd1\d3', r'd2\d3') # 将d1文件夹下的d3转移到d2路径下(如果d2文件夹存在的话)
删除文件
os.remove('d1\d2\f1.txt') # 删除指定路径下的文件(权限较低)
获取当前工作目录
print(os.getcwd()) # 拿到执行文件所在文件夹(如果没有切换工作目录的话)
切换工作目录
os.chdir('d1') # 根据相对路径切换工作目录
print(os.getcwd()) # 相比较没更改之前,多了个\d1
获取文件的绝对路径\文件夹路径
一般来说这个语句常搭配__file__
使用,__file__
表示当前文件。而下面的函数需要传入文件类型的参数。
print(os.path.abspath(__file__)) # 获取当前文件的绝对路径
print(os.path.dirname(__file__)) # 获取当前文件所在文件夹的绝对路径
判断文件路径\文件\文件夹是否存在
print(os.path.exists(r'd1\d2')) # 判断路径\文件是否存在
print(os.path.isfile(r'd1\d2\f1.txt')) # 只判断文件是否存在(多加了个文件判断)
print(os.path.isdir(r'd1\d2\d3')) # 只判断路径是否存在(多加了个路径判断)
路径拼接(**)
路径拼接广泛应用于,新建文件夹到某个文件夹下,新建文件到某个文件夹下(w模式的open)。
如:我们要往执行文件所在文件夹下的db文件夹写入用户文件,就可以用到路径拼接。
ROOT_PATH = os.path.dirname(__file__) # 执行文件就在根目录下,获取根目录
DB_PATH = os.path.join(ROOT_PATH, 'db') # 拼接db文件夹路径
if not os.path.isdir(DB_PATH): # 如果没有创建db文件夹
os.makedirs(DB_PATH) # 则创建对应的文件夹
user_path = os.path.join(DB_PATH, 'name1.txt') # 根据名字进行命名,并拼接到db文件夹后
with open(user_path, 'w', encoding='utf8') as f: # w模式下,文件不存在则创建新文件
f.write('我存储了name1用户的数据')
获取文件大小
print(os.path.getsize(r'db\name1.txt')) # 32 # 得到指定路径文件的数据大小,单位为字节
sys模块
sys模块主要对接我们的python解释器。
语句 | 功能 |
---|---|
sys.path | 获取系统环境变量 |
sys.getrecursionlimit() | 获取解释器最大递归深度 |
sys.setrecursionlimit() | 更改解释器最大递归深度 |
sys.version | 获取解释器版本号 |
sys.platform | 平台信息 |
sys.argv | 从文件外部得到参数 |
系统环境变量
之前在模块名查找顺序那里描述过,如果不是内置模块,则会在系统环境变量里面的路径依次寻找。
sys.path # 本身是列表
# 列表的第一项一般是执行文件所在的文件夹
获取\更改解释器最大递归深度
为了防止程序无限递归占用内存,而设置的保护机制。
print(sys.getrecursionlimit()) # 1000
sys.setrecursionlimit(1500) # 将深度更改为1500
print(sys.getrecursionlimit()) # 1500
获取解释器版本号\平台信息
print(sys.version) # 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)]
print(sys.platform) # win32
从文件外部得到参数(了解)
# a.py内部书写以下代码
import sys
print(sys.argv)
# 如果直接在pycharm里面运行此py文件,那么运行结果是:
['C:/pycharm_project/pythonProject/a.py'] # 文件的绝对路径
但是如果我们通过命令行按下图来执行,结果会不一样:
额外得到了三个参数,并添加到了列表中,用这种方法我们就可以在执行文件时,要求用户密码校验了,如:
import sys
_, user, pwd = sys.argv # 解压赋值得到user和pwd
if user == 'leethon' and pwd == '123':
执行其他功能代码
标签:d2,sys,文件夹,模块,path,os,d1
From: https://www.cnblogs.com/Leethon-lizhilog/p/16811236.html