os 模块文件操作

news/2025/3/9 13:19:31/文章来源:https://www.cnblogs.com/cyrushuang/p/18760611

os 模块是 Python 中用于与操作系统交互的核心模块之一。它提供了许多函数来操作文件、目录、路径以及执行系统命令。


1. 文件和目录操作

1.1 os.getcwd()

  • 作用:获取当前工作目录。

  • 示例

    import os
    print(os.getcwd())  # 输出当前工作目录
    

1.2 os.chdir(path)

  • 作用:改变当前工作目录。

  • 示例

    import os
    os.chdir('/path/to/directory')  # 切换到指定目录
    print(os.getcwd())  # 输出新的工作目录
    

1.3 os.listdir(path)

  • 作用:列出指定目录下的所有文件和子目录。

  • 示例

    import os
    print(os.listdir('.'))  # 列出当前目录下的所有文件和子目录
    

1.4 os.mkdir(path)

  • 作用:创建目录。

  • 示例

    import os
    os.mkdir('new_directory')  # 创建新目录
    

1.5 os.makedirs(path)

  • 作用:递归创建目录(包括父目录)。

  • 示例

    import os
    os.makedirs('parent_dir/child_dir')  # 递归创建目录
    

1.6 os.remove(path)

  • 作用:删除文件。

  • 示例

    import os
    os.remove('file.txt')  # 删除文件
    

1.7 os.rmdir(path)

  • 作用:删除空目录。

  • 示例

    import os
    os.rmdir('empty_directory')  # 删除空目录
    

1.8 os.removedirs(path)

  • 作用:递归删除空目录。

  • 示例

    import os
    os.removedirs('parent_dir/child_dir')  # 递归删除空目录
    

1.9 os.rename(src, dst)

  • 作用:重命名文件或目录。

  • 示例

    import os
    os.rename('old_name.txt', 'new_name.txt')  # 重命名文件
    

1.10 os.replace(src, dst)

  • 作用:重命名文件或目录,如果目标已存在则覆盖。

  • 示例

    import os
    os.replace('old_name.txt', 'new_name.txt')  # 重命名并覆盖
    

2. 路径操作

2.1 os.path.join(path1, path2, ...)

  • 作用:将多个路径组合成一个路径。

  • 示例

    import os
    path = os.path.join('parent_dir', 'child_dir', 'file.txt')
    print(path)  # 输出: parent_dir/child_dir/file.txt
    

2.2 os.path.abspath(path)

  • 作用:返回路径的绝对路径。

  • 示例

    import os
    print(os.path.abspath('file.txt'))  # 输出文件的绝对路径
    

2.3 os.path.basename(path)

  • 作用:返回路径中的文件名或目录名。

  • 示例

    import os
    print(os.path.basename('/path/to/file.txt'))  # 输出: file.txt
    

2.4 os.path.dirname(path)

  • 作用:返回路径中的目录部分。

  • 示例

    import os
    print(os.path.dirname('/path/to/file.txt'))  # 输出: /path/to
    

2.5 os.path.exists(path)

  • 作用:检查路径是否存在。

  • 示例

    import os
    print(os.path.exists('file.txt'))  # 输出: True 或 False
    

2.6 os.path.isfile(path)

  • 作用:检查路径是否是文件。

  • 示例

    import os
    print(os.path.isfile('file.txt'))  # 输出: True 或 False
    

2.7 os.path.isdir(path)

  • 作用:检查路径是否是目录。

  • 示例

    import os
    print(os.path.isdir('directory'))  # 输出: True 或 False
    

2.8 os.path.getsize(path)

  • 作用:返回文件的大小(字节数)。

  • 示例

    import os
    print(os.path.getsize('file.txt'))  # 输出文件大小
    

2.9 os.path.splitext(path)

  • 作用:将路径分割为文件名和扩展名。

  • 示例

    import os
    print(os.path.splitext('file.txt'))  # 输出: ('file', '.txt')
    

3. 系统命令

3.1 os.system(command)

  • 作用:执行系统命令。

  • 示例

    import os
    os.system('ls -l')  # 在 Linux/Mac 上列出目录内容
    

3.2 os.popen(command)

  • 作用:执行系统命令并返回命令的输出。

  • 示例

    import os
    output = os.popen('ls -l').read()
    print(output)  # 输出命令的执行结果
    

4. 环境变量

4.1 os.environ

  • 作用:获取或设置环境变量。

  • 示例

    import os
    print(os.environ['HOME'])  # 输出 HOME 环境变量的值
    os.environ['MY_VAR'] = 'my_value'  # 设置环境变量
    

4.2 os.getenv(key, default=None)

  • 作用:获取指定环境变量的值。

  • 示例

    import os
    print(os.getenv('HOME'))  # 输出 HOME 环境变量的值
    

5. 其他常用方法

5.1 os.walk(top)

  • 作用:递归遍历目录树,返回当前目录路径、子目录列表和文件列表。

  • 示例

    import os
    for root, dirs, files in os.walk('.'):print(f"当前目录: {root}")print(f"子目录: {dirs}")print(f"文件: {files}")
    

5.2 os.stat(path)

  • 作用:获取文件或目录的状态信息。

  • 示例

    import os
    stat_info = os.stat('file.txt')
    print(stat_info.st_size)  # 输出文件大小
    print(stat_info.st_mtime)  # 输出最后修改时间
    

总结

os 模块提供了丰富的功能来操作文件、目录、路径以及执行系统命令。以下是常用方法的总结:

功能类别 常用方法 描述
文件和目录 os.getcwd()os.chdir() 获取和改变当前工作目录。
os.listdir()os.mkdir() 列出目录内容、创建目录。
os.remove()os.rmdir() 删除文件和目录。
os.rename()os.replace() 重命名文件或目录。
路径操作 os.path.join()os.path.abspath() 组合路径、获取绝对路径。
os.path.exists()os.path.isfile() 检查路径是否存在或是否为文件。
os.path.getsize()os.path.splitext() 获取文件大小、分割文件名和扩展名。
系统命令 os.system()os.popen() 执行系统命令并获取输出。
环境变量 os.environos.getenv() 获取或设置环境变量。
其他 os.walk()os.stat() 递归遍历目录树、获取文件状态信息。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于USB声卡导致windows无法自动关闭屏幕或休眠的案例

问题描述:本人买了一台漫步者S880MKII使用自带的type-C线插到笔记本上后,win11系统的超时息屏和超时睡眠功能失效。解决方法:打开设备管理器(图1) 找到以下输出设备,点击事件查看到类似“VID_20B1”信息的设备 (图2) 禁用设备(图3)至此,睡眠功能恢复正常。 注:有副…

P1219 [USACO1.5] 八皇后 Checker Challenge

题目描述 一个如下的 $6 \times 6$ 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列 $2\ 4\ 6\ 1\ 3\ 5$ 来描述,第 $i$ 个数字表示在第 $i$ 行的相应位置有一个棋子,…

专业代加工公司预览-芯晨微纳(河南)光电科技有限公司

一提“代加工”,很多人不自觉的会有几个误区,认为代工就是粗制滥造、没有技术创新,夹缝中求生存。 实际上,代加工也属于技术密集型、设备密集型产业,能为各种企业解决“无设备、无技术、无资金、与工人”等诸多问题,配合企业完成各种验证和测试,称得上企业的最大帮手。 …

JavaWeb学习(八)

JavaWeb学习(八):Web后端开发 —— Spring 目录JavaWeb学习(八):Web后端开发 —— Spring概念SpringBootWeb 快速入门 本文为个人学习记录,内容学习自 黑马程序员概念Spring 是全世界最流行的 Java 框架,它使得 Java 程序更快、更方便、更安全 Spring 提供了多个子项目…

P3629 [APIO2010] 巡逻

P3629 [APIO2010] 巡逻 看题解大佬们都用数学推理求两遍直径的方法,然而萌新并不会这么高级的方式,只能大力分讨了。 思路 对于 \(k=1\) 的情况,加上一条边时,树上出现了一条环且长为 \(S\),环上的原路径都可以少走一遍,再算上新路径要走一遍。此时答案为 \(2 \times (n-…

python——常用函数map、lambda

lambda:英文含义是,希腊字母表第11个字母 https://baijiahao.baidu.com/s?id=1781168343754714555&wfr=spider&for=pc

全面的C#/.NET/.NET Core面试宝典(永久免费)

前言C#/.NET/.NET Core相关技术常见面试题汇总,不仅仅为了面试而学习,更多的是查漏补缺、扩充知识面和大家共同学习、携手进步。该知识库主要由自己平时学习和工作实践总结、网上优秀文章资料收集(这一部分一定会标明来源)和社区小伙伴提供三部分组成。 面试宝典获取方式因…

20241909 2024-2025-2《网络攻防实践》第2次作业

@目录1. 知识点梳理与总结1.1实验要求1.2知识点总结2. 实验过程2.1 实验环境2.2 详细实验过程2.2.1查询baidu.com2.2.2 查询某一好友的IP地址,地理位置2.2.3 使用nmap开源软件对靶机环境进行扫描,回答以下问题并给出操作命令。2.2.4 使用Nessus开源软件对靶机环境进行扫描,回…

dify跨域问题

在本地电脑上,通过vmware安装dify使用时,没有遇到这个问题。 部署dify之后,在添加模型的API-key的时候,一直添加不上,没有反应。打开控制台报错截图如下:报错信息 - Access to fetch at https://marketplace.dify.ai/api/v1/plugins/search/advanced from origin http://…

Program1

实验1 实验1代码 p1: #include<stdlib.h>int main() {printf(" o \n");printf("<H>\n");printf("I I\n");printf(" o \n");printf("<H>\n");printf("I I\n");system("pause");retur…

C#之BitConverter.ToInt16

byte[] bytes = {1,3 }; short s = BitConverter.ToInt16(bytes,0); Console.WriteLine(s);从低位到高位填充: 0000 0003 0000 0001 3*2^8+1=769;byte[] bytes ={0x21,0x31};short s = BitConverter.ToInt16(bytes,0);Console.WriteLine(s);从低位到高位填充: 0003 0001 0002…

大语言模型中的归一化技术:LayerNorm与RMSNorm的深入研究

在LLama等大规模Transformer架构的语言模型中,归一化模块是构建网络稳定性的关键组件。本文将系统分析归一化技术的必要性,并详细阐述为何原始Transformer架构中的LayerNorm在LLama模型中被RMSNorm所替代的技术原理。https://avoid.overfit.cn/post/224e11d8a7d84870b1a3d5e7…