内置模块之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  # 本身是列表
# 列表的第一项一般是执行文件所在的文件夹

image

获取\更改解释器最大递归深度

为了防止程序无限递归占用内存,而设置的保护机制。

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']  # 文件的绝对路径

但是如果我们通过命令行按下图来执行,结果会不一样:

image

额外得到了三个参数,并添加到了列表中,用这种方法我们就可以在执行文件时,要求用户密码校验了,如:

import sys
_, user, pwd = sys.argv  # 解压赋值得到user和pwd
if user == 'leethon'  and pwd == '123':
    执行其他功能代码

原文地址:http://www.cnblogs.com/Leethon-lizhilog/p/16811236.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性