当前位置: 主页 > Python语言

python获取文件及文件夹大小-燕尾夹大小型号

发布时间:2023-03-12 10:06   浏览次数:次   作者:佚名

一、Python模块、包、标准库1.模块和包的概念

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

包:包是一个分层次的文件目录结构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包官网地址:

国内常见的镜像源站点:

➢ 阿里云:

➢ 中国科技大学:

➢ 豆瓣(douban):

➢ 清华大学:

➢ 中国科学技术大学:

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

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

Python标准库:

Python资源集合:

二、os模块1.处理目录、文件

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

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

模块导入方式: import os

官方文档:

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_test\auto_test_project\api_test\demo
# 切换共工作目录,相当于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_test\auto_test_project\api_test\demo
'''
# 获取当前文件的绝对路径
print(os.path.abspath(__file__))  # C:\auto_test\auto_test_project\api_test\demo\os.path.py
# 获取指定文件的真实路径
print(os.path.realpath('os.path.py'))  # C:\auto_test\auto_test_project\api_test\demo\os.path.py
# 获取path路径的基本名称
print(os.path.basename('os.path.py'))  # os.path.py
# 获取当前文件所在目录
print(os.path.dirname(os.path.abspath(__file__)))  # C:\auto_test\auto_test_project\api_test\demo
print(os.path.abspath('.'))  # C:\auto_test\auto_test_project\api_test\demo
# 获取当前文件所在目录的上一层目录
print(os.path.dirname(os.path.abspath('.')))  # C:\auto_test\auto_test_project\api_test
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  # C:\auto_test\auto_test_project\api_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_test\\auto_test_project\\api_test\\demo', '多线程.py')
# 将路径分割成驱动器名和路径
print(os.path.splitdrive(path2))  # ('C:', '\\auto_test\\auto_test_project\\api_test\\demo\\多线程.py')
# 将路径分割成路径名和扩展名
print(os.path.splitext(path2))  # ('C:\\auto_test\\auto_test_project\\api_test\\demo\\多线程', '.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或-1python获取文件及文件夹大小,不能获得显示在屏幕上的数据。 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()方法读取返回结果

执行结果如下:

python获取文件及文件夹大小_燕尾夹大小型号_python获取文件及文件夹大小

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

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

执行结果如下:

python获取文件及文件夹大小_燕尾夹大小型号_python获取文件及文件夹大小

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_test\auto_test_project\api_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)

运行结果如下:

燕尾夹大小型号_python获取文件及文件夹大小_python获取文件及文件夹大小

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

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

python获取文件及文件夹大小_python获取文件及文件夹大小_燕尾夹大小型号

另外,也可以将遍历到的目录和文件写入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)

燕尾夹大小型号_python获取文件及文件夹大小_python获取文件及文件夹大小