Python 常用的标准库及第三方库1-os模块

一、Python模块、包、标准库

1.模块和包的概念

模块:在Python中,一个.py文件就是一个模块,模块让你能够有逻辑地组织你的 Python 代码段。模块能定义函数,类和变量等。

:包是一个分层次的文件目录结构,它定义了一个由模块及子包组成的 Python 的应用环境。简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。

Python模块或包引入常用的三种形式:

◆ import module1[, module2[,... moduleN]] 直接导入整个模块或包;

◆ from modname import name1[, name2[, ... nameN]] 从包或模块导入某个模块、类、函数等;

◆ from modname import * 从某个模块导入该模块的所有内容;

2.Python Package Index (PyPI)

Python语言提供超过15万个第三方库,使用pip安装

Python包官网地址:https://pypi.org/

国内常见的镜像源站点:

➢ 阿里云:http://mirrors.aliyun.com/pypi/simple/

➢ 中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/

➢ 豆瓣(douban):http://pypi.douban.com/simple/

➢ 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/

➢ 中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/simple/

3.Python 常用的标准库及第三方库

利用Python标准许库或三方库,覆盖的功能场景包括:Web框架、网络编程、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。

Python标准库:https://docs.python.org/zh-cn/3.7/library/index.html

Python资源集合:https://github.com/zhoujinjian/awesome-python-cn

二、os模块

1.处理目录、文件

os模块是Python标准库中的一个用于访问操作系统相关功能的模块,使用os模块中提供的接口,可以实现跨平台访问。

os模块的主要功能:系统相关、目录及文件操作、执行命令和管理进程

模块导入方式: import os

官方文档:https://docs.python.org/zh-cn/3.7/library/os.html

os模块中包含了一系列文件操作相关的函数,其中有一部分是Linux平台专用方法:

方法

说明

os.getcwd()

获取当前工作目录,即当前python脚本工作的目录路径

os.chdir("..")

改变当前脚本工作目录;相当于shell下cd

os.listdir('.')

列出指定目录下的所有文件和子目录,包括隐藏文件

os.makedirs('dir1/dir2')

可生成多层递归目录

os.removedirs('dirname')

递归删除空目录(要小心)

os.mkdir('dirname')

生成单级目录

os.rmdir('dirname')

删除单级空目录,若目录不为空则无法删除并报错

os.remove('filename')

删除一个文件

os.rename("oldname","newname")

重命名文件/目录

代码示例:

import os

# 获取当前工作目录
print(os.getcwd())  # C:auto_testauto_test_projectapi_testdemo
# 切换共工作目录,相当于cd
os.chdir('c:')
# 列出指定目录下的所有文件和子目录,包括隐藏文件
print(os.listdir('.'))
# 递归创建目录
os.makedirs(name='test_parent/test_child')  # 如果目录已存在,会提示无法创建
# 递归删除空目录
os.removedirs(name='test_parent/test_child')
# 创建单级空目录
os.mkdir(path='test')  # 如果目录已存在,会提示无法创建
# 删除单级空目录
os.rmdir(path='test')  # 注意:非空目录无法删除
# 创建新文件
with open(file='aaa.txt', mode='w', encoding='utf-8') as f:
    f.write('')
    f.close()
path = 'aaa.txt'
# 判断文件是否存在
if os.path.exists(path):
    # 移除单个文件
    os.remove(path)
else:
    raise FileNotFoundError("文件不存在")

2.os.path文件路径处理

os.path 模块不仅提供了一些操作路径字符串的方法,还包含一些或者指定文件属性的一些方法:

方法

说明

os.path.abspath(path)

返回path的绝对路径

os.path.basename(path)

获取path路径的基本名称,即path末尾到最后一个斜杠的位置之间的字符串

os.path.dirname(path)

返回path路径中的目录部分

os.path.exists(path)

判断path对应的文件是否存在,返回值为布尔值:True/False

os.path.getatime(path)

返回path所指文件的最近访问时间(浮点型秒数)

os.path.getctime(path)

返回path文件的最近修改时间(单位为秒)

os.path.getsize(path)

返回文件大小,如果文件不存在就返回错误

os.path.isabs(path)

判断是否为绝对路径

os.path.isfile(path)

判断路径是否为文件

os.path.isdir(path)

判断路径是否为目录

os.path.join(path1[,path2[,...]])

把目录和文件名合成一个路径

os.path.realpath(path)

返回path的真实路径

os.path.split(path)

把路径分割成dirname和basename,返回形式为元组

os.path.splitdrive(path)

返回驱动器名和路径,返回形式为元组,一般用在Windows下

os.path.splitext(path)

分割路径,返回路径名和文件扩展名,返回形式为元组

代码示例:

import os

'''
当前文件:os.path.py
所在目录:C:auto_testauto_test_projectapi_testdemo
'''
# 获取当前文件的绝对路径
print(os.path.abspath(__file__))  # C:auto_testauto_test_projectapi_testdemoos.path.py
# 获取指定文件的真实路径
print(os.path.realpath('os.path.py'))  # C:auto_testauto_test_projectapi_testdemoos.path.py
# 获取path路径的基本名称
print(os.path.basename('os.path.py'))  # os.path.py
# 获取当前文件所在目录
print(os.path.dirname(os.path.abspath(__file__)))  # C:auto_testauto_test_projectapi_testdemo
print(os.path.abspath('.'))  # C:auto_testauto_test_projectapi_testdemo
# 获取当前文件所在目录的上一层目录
print(os.path.dirname(os.path.abspath('.')))  # C:auto_testauto_test_projectapi_test
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  # C:auto_testauto_test_projectapi_test
# 获取文件大小,不存在会报错
print(os.path.getsize('os.path.py'))  # 1130

path1 = os.path.realpath(__file__)
# 判断是否为绝对路径
print(os.path.isabs(path1))  # True
# 判断路径是否为文件
print(os.path.isfile(path1))  # True
# 判断路径是否为目录
print(os.path.isdir(path1))  # False

path2 = os.path.abspath('多线程.py')
# 将路径分割成目录和文件名
print(os.path.split(path2))  # ('C:auto_testauto_test_projectapi_testdemo', '多线程.py')
# 将路径分割成驱动器名和路径
print(os.path.splitdrive(path2))  # ('C:', 'auto_testauto_test_projectapi_testdemo多线程.py')
# 将路径分割成路径名和扩展名
print(os.path.splitext(path2))  # ('C:auto_testauto_test_projectapi_testdemo多线程', '.py')

# 获取path所指文件的最近访问时间(浮点型秒数)
print(os.path.getatime(path2))  # 1676626725.4052565
# 获取path文件的最近修改时间(单位为秒)
print(os.path.getctime(path2))  # 1676336754.34521

3.执行系统命令

使用os模块中的system或者popen等方法可以执行操作系统的命令。

方法

说明

os.system(command)

运行操作系统命令,直接显示结果。但返回值是0或-1,不能获得显示在屏幕上的数据。 command是要执行的命令字符串。

os.popen(command, [mode, [bufsize]])

开启一个子进程执行command参数指定的命令,在父进程和子进程之间建立一个管道pipe,用于在父子进程间通信,并通过read()方法将命令的结果返回。

代码示例:

import os

ret1 = os.system('adb shell')  # 直接在控制台打印
print(ret1)  # 成功返回0,失败返回1
ret2 = os.popen(cmd='ipconfig')  # 执行ipconfig命令(Windows)
print(ret2.read())  # 通过read()方法读取返回结果

执行结果如下:

另外,通过subprocess模块的getoutput()方法也可以执行系统命令:

ret3 = subprocess.getoutput('ipconfig')
print(ret3)

执行结果如下:

4.遍历目录

方法

说明

os.listdir(dir_name)

遍历目录,不递归,返回一个列表,包含该目录下的所有目录和文件 [目录, 文件]

os.walk(top,topdown=True,onerror=None)

遍历目录,递归,函数返回一个元组:(目录名, [目录列表], [文件列表])。三个元素分别是:每次遍历的路径名、路径下子目录列表、目录下文件列表

代码示例:

import os

dir_name = os.path.dirname(os.path.abspath('.'))
print(dir_name)  # C:auto_testauto_test_projectapi_test

# 遍历当前目录,不递归,返回一个列表 [目录, 文件]
print(os.listdir(dir_name))

# 递归遍历当前目录下的所有文件及目录,返回一个三元元祖(目录名, [目录列表], [文件列表])
for root, dictionary, files in os.walk(dir_name):
    print("***遍历所有目录***")
    for dic in dictionary:
        print(dic)
    print("***遍历所有目录下的文件***")
    for file in files:
        print(file)

运行结果如下:

同时,也可以将遍历到的文件和目录拼接起来:

# 将遍历的文件或目录和它们所在的目录拼接起来
for file in os.listdir(dir_name):
    print(os.path.join(dir_name, file))

另外,也可以将遍历到的目录和文件写入txt文件:

import os

# 声明路径
dir_name = os.path.dirname(os.path.abspath('.'))

# 将遍历的文件或目录名称写入文件
# 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。
# 如果该文件不存在,创建新文件。
with open(file='files.txt', mode='w+', encoding='utf-8') as f:
    for file in os.listdir(dir_name):
        f.write(file)

展开阅读全文

页面更新:2024-05-15

标签:递归   模块   遍历   示例   路径   命令   常用   代码   文件   目录   标准   方法

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top