python - os模块 常用api方法和demo练习

news2024/12/25 12:41:27

文章目录

  • 前言
    • python-os模块常用api方法和demo练习
      • 1. 常用方法
      • 2. demo 练习
      • 3. demo 执行结果

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


python-os模块常用api方法和demo练习

os 是 Python 标准库中的一个模块(os 模块),用于与操作系统进行交互。它提供了一系列函数来执行与操作系统相关的任务,例如文件和目录操作、进程管理、环境变量访问等。

1. 常用方法

序号方法含义
1得到当前工作目录os.getcwd()
2返回指定目录下的所有文件和目录名os.listdir(file_path)
3获取路径名os.path.dirname(path)
4获取文件名os.path.basename(path)
5获取绝对路径os.path.abspath(“test.html”)
6获取文件属性os.stat(path)
7获取文件大小os.path.getsize(path)
8监测文件是否存在os.path.isfile(path)
9重命名os.rename(old,new)
10删除一个文件os.remove(path)
11监测目录是否存在os.path.exists(path)
12创建单级目录os.mkdir(path)
13创建多级目录os.makedirs(path)
14删除多个文件,注意的是如果目录底下如果有文件的话,是删除不了的os.removedirs(path)

2. demo 练习

import os
import random
import shutil


# 返回指定目录下的所有文件和目录名
def listdir(file_path):
    paths = os.listdir(file_path)
    print(f'返回指定目录【{file_path}】下的所有文件和目录名:{os.listdir(file_path)}')
    return paths


# 新建文件
def newFile(file_path):
    with open(file_path, "w", encoding="utf-8") as f:
        pass


# 组装path
def getFilePath(add_directory):
    # 生成一个介于 0 和 9 之间的随机整数
    random_number = random.randint(0, 1000)
    return f'{add_directory}\\{random_number}.txt'


# 得到当前工作目录
print(f'得到当前工作目录:{os.getcwd()}')
path = 'D:\\pathonFile\\test.html'
print(f'获取路径名:{os.path.dirname(path)}')
print(f'获取文件名:{os.path.basename(path)}')
print(f'获取绝对路径:【{os.path.abspath("test.html")}】')
print(f'获取文件属性【{path}】:{os.stat(path)}')
print(f'获取文件大小【{path}】:{os.path.getsize(path)}')
# print(f'运行shell命令【cd】:{os.system("cd")}')
file_path = 'D:\pathonFile'
listdir(file_path)
# 写入文件
add_delete_file_path = f'{file_path}\\testWrite.txt'
# 新建文件
print(f'新建文件:{add_delete_file_path}')
newFile(add_delete_file_path)
# 监测文件是否存在
if os.path.isfile(add_delete_file_path):
    print(f'新建文件【{add_delete_file_path}】已存在')
listdir(file_path)
# 重命名
rename_file_path = f'{file_path}\\yzy.txt'
print(f'重命名,将testWrite.txt重新命名yzy.txt:{os.rename(add_delete_file_path,rename_file_path)}')
listdir(file_path)
print(f'用来删除一个文件【add_delete_file_path】:{os.remove(rename_file_path)}')
listdir(file_path)
# 新建目录
add_directory = f'{file_path}\\new_directory'
print(f'新建目录:{add_directory}')

# 监测目录是否存在
if os.path.exists(add_directory):
    print(f'{add_directory}-已存在')
else:
    print(f'创建多级目录:{add_directory}')
    # 创建单级目录
    # os.mkdir(add_directory)
    # 创建多级目录
    os.makedirs(add_directory)

listdir(file_path)

for i in range(0, 3):
    newFile(getFilePath(add_directory))

# 删除该目录下所有文件
files = listdir(add_directory)
for file_name in files:
    # 函数会根据操作系统自动使用适当的分隔符,生成路径
    file_path_del = os.path.join(add_directory,  file_name)
    try:
        if os.path.isfile(file_path_del):  # 检查是否为文件
            os.remove(file_path_del)  # 删除文件
            print(f"Deleted {file_path_del}")
        else:
            print(f"Skipped {file_path_del} (not a file)")
    except OSError as error:
        print(f"Error while deleting {file_path_del}: {error}")

"""
使用 shutil.rmtree() 函数可以递归地删除目录及其所有内容,包括文件和子目录。这样的操作是不可恢复的,因此请确保在使用之前已备份重要的数据。
"""
# print(f'删除多个文件【{add_directory}】:{shutil.rmtree(add_directory)}')
listdir(add_directory)
# 注意的是如果目录底下如果有文件的话,是删除不了的
print(f'删除多个目录【{add_directory}】:{os.removedirs(add_directory)}')
listdir(file_path)




扩展:递归地删除目录及其所有内容,包括文件和子目录
import shutil
shutil.rmtree(path)

3. demo 执行结果

在这里插入图片描述

D:\python\python.exe D:/git/python/test/demo-01/08-python-os模块.py
得到当前工作目录:D:\git\python\test\demo-01
获取路径名:D:\pathonFile
获取文件名:test.html
获取绝对路径:【D:\git\python\test\demo-01\test.html】
获取文件属性【D:\pathonFile\test.html】:os.stat_result(st_mode=33206, st_ino=138204213564941818, st_dev=2968367255, st_nlink=1, st_uid=0, st_gid=0, st_size=2750, st_atime=1695801983, st_mtime=1695801983, st_ctime=1695713571)
获取文件大小【D:\pathonFile\test.html】:2750
返回指定目录【D:\pathonFile】下的所有文件和目录名:['test.html', 'test.txt']
新建文件:D:\pathonFile\testWrite.txt
新建文件【D:\pathonFile\testWrite.txt】已存在
返回指定目录【D:\pathonFile】下的所有文件和目录名:['test.html', 'test.txt', 'testWrite.txt']
重命名,将testWrite.txt重新命名yzy.txt:None
返回指定目录【D:\pathonFile】下的所有文件和目录名:['test.html', 'test.txt', 'yzy.txt']
用来删除一个文件【add_delete_file_path】:None
返回指定目录【D:\pathonFile】下的所有文件和目录名:['test.html', 'test.txt']
新建目录:D:\pathonFile\new_directory
创建多级目录:D:\pathonFile\new_directory
返回指定目录【D:\pathonFile】下的所有文件和目录名:['new_directory', 'test.html', 'test.txt']
返回指定目录【D:\pathonFile\new_directory】下的所有文件和目录名:['895.txt', '958.txt', '963.txt']
Deleted D:\pathonFile\new_directory\895.txt
Deleted D:\pathonFile\new_directory\958.txt
Deleted D:\pathonFile\new_directory\963.txt
返回指定目录【D:\pathonFile\new_directory】下的所有文件和目录名:[]
删除多个目录【D:\pathonFile\new_directory】:None
返回指定目录【D:\pathonFile】下的所有文件和目录名:['test.html', 'test.txt']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1050159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进入IT行业:选择前端开发还是后端开发?

一、前言 开发做前端好还是后端好?这是一个常见的问题,特别是对于初学者来说。在编程世界中,前端开发和后端开发分别代表着用户界面和数据逻辑,就像城市的两个不同街区一样。但是,究竟哪个街区更适合我们作为开发者呢…

chatgpt 只会死记硬背吗

本周写两篇关于 chatgpt 的随感,我不善于写文档,所以我的文字多是输出直感和观点,而不是知识,没有关于 chatgpt 的原理和应用,甚至术语也不匹配,反正就是想到哪算哪吧。 都说 chatgpt 没有内在逻辑&#xf…

51单片机用IIc控制OLED显示数组内容

为了能够看到51单片机接收到的串口数据,我选择了用oled显示收到的数据,特此花重金买了一块oled屏128X64的屏幕大概10来块钱吧!首先要达成的小目标就是能够显示数组的内容,建立一个字符数组,用来接收串口收到的数据&…

北斗智能终端:助力森林保护的新利器

北斗智能终端:助力森林保护的新利器 近年来,大兴安岭图强林业局利用北斗等技术,推进森林保护的数字化进程,为高质量发展注入了新的动力和活力。 据了解,当地利用北斗终端对森林资源进行精准管理。为88名管护员和10名监…

软件设计模式系列之十九——中介者模式

中介者模式目录 1 模式的定义2 举例说明3 结构4 实现步骤5 代码实现6 典型应用场景7 优缺点8 类似模式9 小结 1 模式的定义 中介者模式是一种行为型设计模式,它用于降低对象之间的直接通信,通过引入一个中介者对象来管理对象之间的交互。这种模式有助于…

如何配置代理

打开Clask,设置为系统代理,选择规则判断,规则判断就是需要走代理的走代理,不需要走的就不用走代理 本地使用代理 如何想要让某个地方使用代理,可以直接在该地方的终端进行设置 先复制一下终端代理命令,然…

python使用mitmproxy和mitmdump抓包在手机上抓包(三)

现在手机的使用率远超过电脑,所以这篇记录用mitmproxy抓手机包,实现手机流量监控。 环境:win10 64位,Python 3.10.4,雷电模拟器4.0.78,android版本7.1.2(设置-拉至最底部-关于平板电脑&#xf…

一篇博客学会系列(2)—— C语言中的自定义类型 :结构体、位段、枚举、联合体

目录 前言 1、结构体 1.1、结构体类型的声明 1.2、特殊的结构体类型声明 1.3、结构体的自引用 1.4、结构体的定义和初始化 1.5、结构体成员变量的调用 1.6、结构体内存对齐 1.6.1、offsetof 1.6.2、结构体大小的计算 1.6.3、为什么存在内存对齐? 1.7、…

C理解(一):内存与位操作

本文主要探讨C语言的内存和为操作操作相关知识。 冯诺依曼结构和哈佛结构 冯诺依曼结构:数据和代码放在一起,便于读取和修改,安全性低 哈佛结构是:数据和代码分开存放,安全性高,读取和修麻烦 内存 内存是用来存储全局变量、局…

chatgpt,神经网络与拥塞控制

chatgpt 是一个巨大的带答案的完形填空题库,它可以回答几乎所有的文字类问题,不保证完全正确,但大致正确。它是怎么做到的? 它怎么知道我要问什么,如果它知道我要问什么,那么问题的不同表达形式它也一定知…

如何利用AI算法+EasyCVR视频监控技术打造鱼塘养殖监管方案

对鱼塘养殖行业来说,养殖区域面积大、管理难,经常会遇到偷钓者、盗窃鱼苗、非法入侵等监管难题。传统的人工监管模式不仅耗费人力成本,而且监管效率低下,无法满足当前养殖户的需求。因此,搭建智能化的远程视频监控系统…

Linux 基本语句_5_创建静态库|动态库

静态库 创建主函数:main.c 应用函数:add.c、sub.c、mul.c 创建calc.h文件作为头文件 生成可执行文件*.o文件 gcc -c add.c -o add.o ....包装*.o文件为静态库 ar -rc libmymath.a add.o sub.o mul.o编译静态库并指明创建静态库的位置 sudo gcc mai…

原型、原型链、判断数据类型

目录 作用 原型链 引用类型:__proto__(隐式原型)属性,属性值是对象函数:prototype(原型)属性,属性值是对象 Function:本身也是函数 相关方法 person.prototype.isPrototypeOf(stu) Object.getPrototypeOf(objec…

论企业IPV4和IPV6网络融合互通网络规划设计

01、IPv6改造问题及整体改造思路 随着“十四五”期间国家政策对IPv6深化改造及规模部署的推动,在IPv6改造过程中出现了越来越多的系统性问题,如图1所示。 图1 关于IPv6改造的各种疑问 所有跨设备通信的IT软硬件系统均需要处理IP地址,各领域…

Android SDK目录结构

目录结构如下: 1:add-ons 该目录中存放 Android 的扩展库,比如 Google Maps,但若未选择安装 Google API,则该目录为空。 2:build-tools 编译工具目录:保存了Android开发常用的工具&#xff0…

【.NET源码解读】Configuration组件及自动更新

Configuration组件是.NET中一个核心的、非常重要的组件。它提供了一种方便的机制,用于从配置文件、环境变量、命令行参数等各种数据源中读取和配置应用程序,以满足不同环境下应用程序的需求。 在本篇文章中,将会介绍Configuration的基本用法…

使用Visual Studio调试排查Windows系统程序audiodg.exe频繁弹出报错

VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...&a…

智慧燃气平台的总体架构到底应怎样设计?

关键词:智慧燃气、智慧燃气平台、智能燃气、智能监控 智慧燃气平台功能设计的一些方向和思考: 1、资源统一,管理调度 城市燃气智慧调度运营管理平台收集并且整理出每个业务系统信息,并且根据所整理出的信息结果制定出标准规范&…

Excel·VBA分列、字符串拆分

看到一篇博客《VBA,用VBA进行分列(拆分列)的2种方法》,使用VBA对字符串进行拆分 目录 Excel分列功能将字符串拆分为二维数组,Split函数举例 将字符串拆分为一维数组,正则表达式举例 Excel分列功能 Sub 测…

windows下使用VS2019 + CMake 进行Qt开发记录

windows下使用VS2019 CMake 进行Qt开发 前言一、准备工作二、VS2019 cmake3.20 Qt1.VS2019新建一个cmake工程2.修改CMakelist.txt3.运行测试 总结 前言 注意:本文讲的是vs2019 cmake的方式开发Qt程序。 常言道:工欲善其事必先利其器。工具利用的好…