python中os库用法详解(总结)

2023-11-01

        os库主要是对文件和文件夹进行操作,在Python中对⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能。

具体步骤如下:

1. 导⼊os模块

import os

2. 使⽤ os 模块相关功能

os.函数名()

1、⽂件重命名

os.rename(⽬标⽂件名, 新⽂件名)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.listdir())
os.rename('./test_folder', './new_folder')
print(os.listdir())

运行结果;

2、创建文件

os.mknod('./new_file.txt')    # Windows下不支持

示例代码:

import os

print(os.listdir())

# 新建文件(windows系统不支持,报错)
# os.mknod('./new_file.txt')

# windows下新建文件
f = open('./new_file2.txt', 'w', encoding='utf-8')
f.close()

3、删除⽂件

os.remove(⽬标⽂件名)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.listdir())
os.remove('./text.txt')
print(os.listdir())

运行结果:

4、创建⽂件夹

os.mkdir(⽂件夹名字)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.listdir())
os.mkdir('./test_folder')
print(os.listdir())

运行结果:

详见博文:Python创建目录文件夹_IT之一小佬的博客-CSDN博客 

5、删除⽂件夹

os.rmdir(⽂件夹名字)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.listdir())
os.rmdir('./test_folder')
print(os.listdir())

运行结果:

6、获取当前⽬录

os.getcwd()

示例代码:

import os

print(os.getcwd())

 运行结果:

7、改变默认⽬录

os.chdir(⽬录)

8、获取⽬录列表

os.listdir(⽬录)

示例代码:

import os

print(os.listdir())

运行结果:

9、返回路径的上一级路径字符串

os.path.dirname(path)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.dirname('./aa/python_test'))
print(os.path.dirname('./python_test'))
print(os.path.dirname(a))

运行结果:

 

10、返回路径的最后一级目录名(文件夹名)或文件名(全称)

os.path.basename(path)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.basename(a))
print(os.path.basename('./aa/python_test'))
print(os.path.basename('./python_test'))

运行结果:

11、返回文件名和其后缀组成的元组

os.path.splitext(file_name)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.splitext(a))
print(os.path.splitext('./aa/python_test'))
print(os.path.splitext('./python_test'))
print(os.path.splitext('./python_test.python'))

运行结果:

12、获取当前文件的绝对位置

os.path.abspath(__file__)

示例代码:

import os

current_path = os.path.abspath(__file__)
print(current_path)

current_folder = os.path.dirname(current_path)
print(current_folder)

运行结果:

13、返回当前工作目录的路径加上string组成的路径字符串

 os.path.abspath(string)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.abspath(a))
print(os.path.abspath('./aa/python_test'))
print(os.path.abspath('./python_test'))
print(os.path.abspath('./python_test.python'))

运行结果:

 14、判断一个路径是否是一个目录(文件夹)

os.path.isdir(path)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.isdir(a))
print(os.path.isdir('./aa/python_test'))
print(os.path.isdir('../111'))
print(os.path.isdir('./python_test.python'))

运行结果:

 15、判断一个路径是否是一个文件

os.path.isfile(path)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.isfile(a))
print(os.path.isfile('./aa/python_test'))
print(os.path.isfile('../111'))
print(os.path.isfile('./python_test.py'))

print(os.listdir())

运行结果:

16、以列表的形式返回一个目录(dir_path只能是目录,不能是文件名路径)下的所有文件(全称)和文件夹名称

os.listdir(dir_path)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.listdir())
print(os.listdir('E:/代码/111'))
print(os.listdir('E:/代码/111/css'))

运行结果:

17、删除指定空目录(空文件夹)

 os.removedirs(dir_path)

示例代码1:

import os

a = os.getcwd()
print(a)
print(os.listdir())
os.removedirs('./new_folder')
print(os.listdir())

运行结果:

示例代码2:   【必须是空文件夹】

import os

a = os.getcwd()
print(a)
print(os.listdir())
os.removedirs('./new_folder')
print(os.listdir())

运行结果:

 18、判断一个路径是否存在

os.path.exists(path)

示例代码:

import os

a = os.getcwd()
print(a)
if os.path.exists(a):
    print('path exist!')
else:
    print('path not exist!')

if os.path.exists('E:/代码/111'):
    print('path exist!')
else:
    print('path not exist!')

if os.path.exists('E:/代码/111/new_path'):
    print('path exist!')
else:
    print('path not exist!')

运行结果:

19、返回path的真实路径

os.path.realpath(path)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.realpath('./python_test.py'))

运行结果:

20、路径拼接

os.path.join(path,name)

示例代码1:

import os

a = os.getcwd()
print(a)
b = os.path.join(a, 'works')
print(b)

运行结果:

示例代码2:

import os

print(os.path.join('xx', 'yy', 'zz'))
print(os.path.join('AA', 'BB', 'CC', 'DD'))

运行结果:

21、返回一个路径的目录名和文件名 

os.path.split()

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.split(a))
print(os.path.split('E:/代码/111/index.html'))

运行结果:

 22、获得文件属性

os.stat(file)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.stat(a))
print(os.stat('E:/代码/111/index.html'))

运行结果:

 23、获得文件大小

os.path.getsize(name)

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.getsize(a))
print(os.path.getsize('E:/代码/111/index.html'))

运行结果:

24、判断是否为绝对路径

os.path.isabs()

示例代码:

import os

a = os.getcwd()
print(a)
print(os.path.isabs(a))
print(os.path.isabs('E:/代码/111/index.html'))
print(os.path.isabs('./index.html'))

运行结果:

25、获取环境变量中的值

        使用os获取环境变量的值,通常是使用os.getenv("value"),也可以使用os.environ.get("value")。也能够直接在settings等文件中设置环境变量,使用os.environ["key"] = "value"。

详解博文:python获取环境变量中的值(Pycharm)_IT之一小佬的博客-CSDN博客

26、随机生成n个字节的字符串

os.urandom(n)的作用就是随机生成n个字节的字符串,可以作为随机加密的key使用。

示例代码1:

import os

aa = os.urandom(6)
print(aa)

bb = aa.decode('utf-8', 'ignore')
print(bb)

运行结果:

示例代码2:

import os

for _ in range(5):
    print(os.urandom(6))

运行结果:

27、文件和文件夹操作应⽤案例

需求:批量修改⽂件名,既可添加指定字符串,⼜能删除指定字符串。

步骤

        1. 设置添加删除字符串的的标识

        2. 获取指定⽬录的所有⽂件

        3. 将原有⽂件名添加/删除指定字符串,构造新名字

        4. os.rename()重命名

示例代码1:

import os

# 获取指定⽬录
dir_name = './'
# 获取指定⽬录的⽂件列表
file_list = os.listdir(dir_name)
print(file_list)

运行结果:

 示例代码2:   【把flag=1改为flag=2即为删除功能】

import os

# 设置重命名标识:如果为1则添加指定字符,flag取值为2则删除指定字符
flag = 1
# 获取指定⽬录
dir_name = './'
# 获取指定⽬录的⽂件列表
file_list = os.listdir(dir_name)
print(file_list)

# 遍历⽂件列表内的⽂件
for name in file_list:
    # 添加指定字符
    if flag == 1:
        new_name = 'Python-' + name
    # 删除指定字符
    elif flag == 2:
        num = len('Python-')
        new_name = name[num:]
    # 打印新⽂件名,测试程序正确性
    print(new_name)

    # 重命名
    os.rename(dir_name + name, dir_name + new_name)

运行结果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中os库用法详解(总结) 的相关文章

  • (discord.py) 尝试更改成员角色时,“用户”对象没有属性“角色”

    因此 我正在尝试编写一个机器人 让某人在命令中指定的主持人指定的一段时间内暂停角色 我知道该变量称为 小时 即使它目前以秒为单位 我稍后会解决这个问题 基本上 它是由主持人在消息 暂停 personmention numberofhours
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar

随机推荐

  • 步进电机基本原理及驱动方式详解

    步进电机基本原理及驱动方式详解 步进电机相关概念 基本原理 类型和结构 转子结构 定子结构 励磁方式 ATD9800 驱动使用实例 参考文献 步进电机相关概念 步进电机是一种常用于控制和定位应用的电动机 其独特的工作方式使其在许多领域中都具
  • linux tcl环境安装

    1 安装tcl 下载tcl网址 http www tcl tk software tcltk download html 编译说明网址 http www tcl tk doc howto compile html unix gunzip l
  • flutter 使用阿里图标

    1 下载图标 阿里图标 2 解压 将iconfont ttf放入lib assets icons内 解压下载的阿里图标文件 我们只需要里面的iconfont ttf文件 将iconfont ttf文件放入lib assets icons内
  • hadoop资料汇总贴

    一 Hadoop快速入门 分布式计算开源框架Hadoop 入门实践 福布斯 Hadoop 你不得不了解的大数据工具 用 Hadoop 进行分布式数据处理 入门 Hadoop入门 一图解说Hadoop的发展历程 讨论 Hadoop社区与中国云
  • C语言进阶——动态内存管理

    作者 敲代码 流川枫 博客主页 流川枫的博客 专栏 C语言从入门到进阶 语录 Stay hungry stay foolish 工欲善其事必先利其器 给大家介绍一款超牛的斩获大厂offer利器 牛客网 点击免费注册和我一起刷题吧 文章目录
  • 单片机项目实训

    把时髦的技术挂在嘴上 不如把过时的技术记在心里 目录 一 单片机项目实训 项目实战 基于NRF905的多点温度无线采集系统 项目实战 基于NRF24L01的多点温湿度无线采集系统 项目实训 篮球计分系统设计 无线nRF905版本 项目实训
  • 鸿蒙珠融入体内,斗罗大陆同人小说排行榜。第一名:《斗罗大陆之超级无敌》:主角...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 斗罗大陆同人小说排行榜 第一名 斗罗大陆之超级无敌 主角玉天龙被鸿蒙紫珠带着穿越到斗罗大陆 遁入柳二龙体内 柳二龙未与他人交合 便生下玉天龙 斗罗大陆之超级无敌 这本书拥有系统 鸿蒙紫珠 召唤技
  • 项目开发中常见问题汇总

    已经在拦截中配置访问静态资源不拦截 但是在访问静态资源时 仍然出现404错误 解决办法 在配置文件中配置 spring mvc static path pattern static spring web resources static l
  • VC6与VISIO2007的冲突

    装了VC6 在 文件 gt 打开 时会出错 以下是查到的解决方法 如果在VC6 0中的 FileView 右键点 add files to folder 或者在Project菜单点Add to project Files都会报devshl
  • element表格实现溢出隐藏单元格增加复制按钮

    此功能可以实现只写一个公共复制按钮 可以在多个页面的表格中使用 项目框架为vue 用到了element ui vuex clipboard 如果不想使用vuex 则需要想办法把复制按钮的位置x y坐标写成公共的变量 1 复制按钮 如果整个项
  • 使用dd命令制作Ubuntu U盘启动盘(使用U盘启动盘安装Ubuntu系统)

    1 查看挂载的U盘的设备名称 sudo fdisk l 2 如果U盘还在挂载状态 卸载它 否则 会提示设备或资源正忙 umount dev u盘名 3 格式化U盘 sudo mkfs ntfs f dev u盘名 4 写入启动引导 sudo
  • Redis面试题(一): Redis到底是多线程还是单线程?

    0 redis单线程问题 单线程指的是网络请求模块使用了一个线程 所以不需考虑并发安全性 即一个线程处理所有网络请求 其他模块仍用了多个线程 1 为什么说redis能够快速执行 1 绝大部分请求是纯粹的内存操作 非常快速 2 采用单线程 避
  • C++泛型编程

    写在前面 0 所谓泛型编程就是独立于任何特定类型的方式编写代码 使用泛型程序时 需要提供具体陈旭实例所操作的类型或者值 我们经常用到STL容器 迭代器 和算法都是泛型编程的例子 模板是C 支持参数化多态的工具 使用模板可以使用户为类或者函数
  • 瑞芯微rockchip PX30触摸屏调试记录

    系列文章目录 瑞芯微rockchip PX30 串口调试记录 瑞芯微rockchip PX30 显示屏调试 瑞芯微rockchip PX30触摸屏调试记录 瑞芯微rockchip PX30 QT环境搭建 瑞芯微rockchip PX30 G
  • 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用

    这段时间要把tinyxml从静态库弄成动态库 要用到 declspec dllexport 和 declspec dllimport 来导出dll和lib文件 终于弄明白了export和import的作用 下面从使用的角度来说明一下他们的功
  • 我用ChatGPT写神经网络:一字不改,结果竟很好用

    自从去年底推出以来 对话式 AI 模型 ChatGPT 火遍了整个社区 ChatGPT 的确是一个了不起的工具 就像一个 潘多拉魔盒 一旦找到正确的打开方式 你或许会发现 自己再也离不开它了 作为一个全能选手 人们给 ChatGPT 提出的
  • exe 网页套壳_一日一技

    Matrix 首页推荐 Matrix 是少数派的写作社区 我们主张分享真实的产品体验 有实用价值的经验与思考 我们会不定期挑选 Matrix 最优质的文章 展示来自用户的最真实的体验和观点 文章代表作者个人观点 少数派仅对标题和排版略作修改
  • JS——输入输出语法&数组的操作

    JavaScript输入输出语法 目标 能写出常见的JavaScript输入输出语法 输出语法 语法1 document write 要输出的内容 作用 向body内输出内容 注意 如果输出的内容写的是标签 也会被解析成网页元素 语法2 a
  • C#----对子窗体进行层叠排列

    欢迎大家提出意见 一起讨论 转载请标明是引用于 http blog csdn net chenyujing1234 代码 VS2008 http www rayfile com zh cn files f4235a26 9aa8 11e1
  • python中os库用法详解(总结)

    os库主要是对文件和文件夹进行操作 在Python中对 件和 件夹的操作要借助os模块 的相关功能 具体步骤如下 1 导 os模块 import os 2 使 os 模块相关功能 os 函数名 1 件重命名 os rename 标 件名 新