【100天精通python】Day20:文件及目录操作_os模块和os.psth模块,文件权限修改

目录

专栏导读 

1 文件的目录操作

 os模块的一些操作目录函数​编辑

 os.path 模块的操作目录函数

 2 相对路径和绝对路径 

3 路径拼接

 4 判断目录是否存在

5 创建目录、删除目录、遍历目录


专栏导读 

专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html


1 文件的目录操作

在Python中,os模块和os.path模块是两个常用的模块,用于进行文件和目录操作。

  1. os模块:

    • os模块提供了许多用于操作操作系统功能的函数。它允许您执行文件和目录操作,创建和删除目录,获取当前工作目录,执行系统命令等。
    • 该模块提供了一种跨平台的方法来访问操作系统功能,因此可以在不同的操作系统上运行相同的Python代码。
  2. os.path模块:

    • os.path模块提供了用于处理文件路径和目录路径的函数。它不执行实际的文件或目录操作,而是提供了一些有用的方法来处理路径字符串。
    • 该模块可以用于检查文件或目录是否存在,获取文件名或目录名,获取文件的扩展名,拼接路径等操作。

下面是一些常用的函数示例:

import os# os模块示例
os.mkdir('new_directory')  # 创建目录
os.rmdir('directory_to_delete')  # 删除目录
contents = os.listdir('directory_to_list')  # 列出目录内容
os.chdir('new_working_directory')  # 更改当前工作目录# os.path模块示例
file_path = 'path/to/file.txt'
dir_path = 'path/to/directory'
print(os.path.exists(file_path))  # 检查文件是否存在
print(os.path.basename(file_path))  # 获取文件名
print(os.path.dirname(file_path))  # 获取文件所在目录
print(os.path.splitext(file_path))  # 获取文件扩展名
print(os.path.join(dir_path, 'new_file.txt'))  # 拼接路径

假设在当前工作目录下有一个名为directory_to_list的目录,该目录中包含一些文件和子目录,如file.txt等。假设当前工作目录已更改为new_working_directory,而且目录new_directory已被创建。

示例输出如下:

True  # 文件'to/file.txt'存在
file.txt  # 获取文件名
path/to  # 获取文件所在目录
('path/to/file', '.txt')  # 获取文件扩展名
path/to/directory/new_file.txt  # 拼接路径

 注意,os.path模块中的函数可以直接在不同的操作系统上使用,因为它们会根据操作系统自动处理路径分隔符。而os模块中的函数可能在不同操作系统上有不同的行为,需要小心使用。

 os模块的一些操作目录函数

 os.path 模块的操作目录函数

 2 相对路径和绝对路径 

在计算机文件系统中,路径用于定位文件或目录的位置。Python中的路径可以分为相对路径和绝对路径。

  1. 相对路径(Relative Path): 相对路径是相对于当前工作目录(当前脚本所在目录)的路径。它不包含完整的文件系统路径,而是指定文件或目录相对于当前位置的位置。

例如,假设当前工作目录为/home/user/Documents,而目标文件file.txt位于该目录下,则可以使用相对路径file.txt来指定该文件。相对路径没有以根目录(如/)开头,而是从当前位置开始描述路径。

  1. 绝对路径(Absolute Path): 绝对路径是指从根目录开始描述文件或目录的完整路径。它包含文件系统的完整路径信息。

例如,假设目标文件file.txt位于/home/user/Documents目录下,绝对路径将是/home/user/Documents/file.txt

Python中可以使用os模块来处理路径,例如:

import os# 获取当前工作目录
current_dir = os.getcwd()
print("当前工作目录:", current_dir)# 使用相对路径
relative_path = "file.txt"  # 文件所在的相对路径
file_path = os.path.join(current_dir, relative_path)
print("文件路径:", file_path)# 使用绝对路径
absolute_path = "/home/user/Documents/file.txt"
file_path = os.path.abspath(absolute_path)
print("绝对路径:", file_path)

假设当前工作目录为/home/user/Documents,文件file.txt位于该目录下,则代码的预期输出结果应该是:

当前工作目录: /home/user/Documents
文件路径: /home/user/Documents/file.txt  #当前工作目录+相对路径(file.txt)
绝对路径: /home/user/Documents/file.txt

3 路径拼接

在Python中,可以使用os.path.join()函数来拼接路径。这个函数会根据当前操作系统的规范正确地拼接路径,并自动处理路径分隔符。

示例代码:

import os# 定义目录和文件名
directory = "/home/user/Documents"
filename = "file.txt"# 使用os.path.join()拼接路径
file_path = os.path.join(directory, filename)# 打印结果
print("拼接后的路径:", file_path)

输出结果为: 

 在上面的示例中,os.path.join()函数会将directoryfilename两个部分拼接成完整的文件路径,并且自动处理路径分隔符,确保路径的正确性。

4 判断目录是否存在

在Python中,你可以使用os.path.exists()函数来判断一个目录是否存在。这个函数接受一个目录路径作为参数,如果该目录存在,则返回True,否则返回False

import os# 定义目录路径
directory = "/path/to/directory"# 判断目录是否存在
if os.path.exists(directory):print("目录存在")
else:print("目录不存在")

5 创建目录、删除目录、遍历目录

        在Python中,你可以使用os.mkdir()函数来创建目录,使用os.rmdir()函数来删除目录,以及使用os.listdir()函数来遍历目录中的文件和子目录。

5.1 创建目录示例代码: 

import os# 定义目录路径
directory = "/path/to/new_directory"# 创建目录
os.mkdir(directory)
print("目录已创建")

5.2 删除目录示例代码:

import os# 定义目录路径
directory = "/path/to/directory_to_delete"# 删除目录
os.rmdir(directory)
print("目录已删除")

5.3  遍历目录示例代码:

import os# 定义目录路径
directory = "/path/to/directory_to_traverse"# 遍历目录
for filename in os.listdir(directory):filepath = os.path.join(directory, filename)if os.path.isfile(filepath):print("文件:", filename)elif os.path.isdir(filepath):print("子目录:", filename)

请确保将/path/to/new_directory/path/to/directory_to_delete/path/to/directory_to_traverse分别替换为你想要创建、删除和遍历的目录路径。


下一篇:介绍文件的批量处理,文件的权限修改等高级文件操作。

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

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

相关文章

Mysql-MVCC 并发版本控制

参考链接:一文读懂MVCC实现原理_Nicolos_Z的博客-CSDN博客 1.总述: MVCC 主要是InnoDB解决数据库事务读写,导致的脏读、重复读问题的处理方法。通过快照读的方式,提高数据库并发查询的能力。 2.MVCC的实现 实现MVCC主要用到了…

在OK3588板卡上部署模型实现人工智能OCR应用

一、主机模型转换 我们依旧采用FastDeploy来部署应用深度学习模型到OK3588板卡上 进入主机Ubuntu的虚拟环境 conda activate ok3588 安装rknn-toolkit2(该工具不能在OK3588板卡上完成模型转换) git clone https://github.com/rockchip-linux/rknn-to…

金蝶云星空任意文件读取漏洞复现(0day)

0x01 产品简介 金蝶云星空是一款云端企业资源管理(ERP)软件,为企业提供财务管理、供应链管理以及业务流程管理等一体化解决方案。金蝶云星空聚焦多组织,多利润中心的大中型企业,以 “开放、标准、社交”三大特性为数字…

ChatGPT伦理挑战:人工智能的权利与责任

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Android 首次开机优化分析工具bootchart

Android开机时长优化_android 开机时间优化_Mart!nHu的博客-CSDN博客 bootchart使用_bootchart.jar_xuyewen288的博客-CSDN博客 bootchart_hc-斌斌的博客-CSDN博客 性能分析工具 — bootchart 工具使用(android 8.1)_岁月斑驳7的博客-CSDN博客 linux-用户进程时间统计_pybo…

HCIP期中实验

考试需求 1 、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2 、设备名称均使用拓扑上名称改名,并且区分大小写。 3 、整张拓扑均使用私网地址进行配置。 4 、整张网络中,运行 OSPF 协议…

除......之外,不等于

查找除复旦大学的用户信息_牛客题霸_牛客网 3种方法 1. <> select device_id,gender,age,university from user_profile where university <> 复旦大学; 2. !&#xff08;其实是<>不等于的另外一种写法&#xff09; select device_id,gender,age,univ…

实时协作:团队效率倍增的关键

实时协作是指团队在当前时刻共同完成项目的能力。无论是否使用技术&#xff0c;都能实现这一点。然而&#xff0c;随着远程工作的盛行&#xff0c;安全的协作工具被用来让团队成员在项目和一般业务之间保持联系和同步。 传统协作与实时协作的区别 两种类型的协作最明显的区别…

uniapp 微信小程序 navigationBarBackgroundColor 标题栏颜色渐变

大体思路&#xff1a; 第一步&#xff1a;“navigationStyle”:“custom” 第二步&#xff1a; template内 重点&#xff1a;给view添加ref“top” 第三步&#xff1a;添加渐变色样式 1、pages.json {"path" : "pages/user/user","style" : …

【玩转Linux】Linux输入子系统简介

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

拯救者Y9000K无线Wi-Fi有时不稳定?该如何解决?

由于不同品牌路由器的性能差异&#xff0c;无法完美兼容最新的无线网卡技术&#xff0c;在连接网络时&#xff08;特别是网络负载较大的情况下&#xff09;&#xff0c;可能会出现Wi-Fi信号断开、无法网络无法访问、延迟突然变大的情况&#xff1b;可尝试下面方法进行调整。 1…

“深入理解SpringBoot:从入门到精通的几个关键要点“

标题&#xff1a;深入理解Spring Boot&#xff1a;从入门到精通 摘要&#xff1a;本文将深入探讨Spring Boot的关键要点&#xff0c;帮助读者从入门到精通。我们将从Spring Boot的基本概念开始&#xff0c;介绍自动配置、起步依赖、注解驱动开发等特性&#xff0c;并通过示例代…

ZooKeeper分布式锁、配置管理、服务发现在Java开发中的应用

ZooKeeper提供了多种功能&#xff0c;包括分布式锁、配置管理、服务发现、领导选举等。 下面是一些常见的ZooKeeper功能及其在Java中的应用示例代码。 分布式锁 import org.apache.zookeeper.*; import java.io.IOException; import java.util.concurrent.CountDownLatch;pu…

前端小练-仿掘金导航栏

文章目录 前言项目结构导航实现创作中心移动小球消息提示 完整代码 前言 闲的&#xff0c;你信嘛&#xff0c;还得开发一个基本的门户社区网站&#xff0c;来给到Hlang,不然我怕说工作量不够。那么这个的话&#xff0c;其实也很好办&#xff0c;主要是这个门户网站的UI写起来麻…

pytest study

pytest 测试用例的识别与运行 测试文件&#xff1a;test_*.py 和 *_test.py 以test开头或结尾的文件 测试用例&#xff1a;Test*类包含的所有 test_*的方法&#xff08;测试类不能带有__init__方法&#xff09;&#xff0c; 不在class中的所有test_*的方法 def func(x):r…

web-文件上传和upload-labs靶场通关

目录 前端过滤 uploads-lab-1: 后端验证 upload-labs-2&#xff1a;mime验证 upload-labs-3&#xff1a;黑名单绕过 upload-labs-4&#xff1a;黑名单绕过-.htaccess(这里得用旧版的phpstudy&#xff0c;新版的不行) upload-labs-5&#xff1a;后缀名绕过 upload-labs-…

Android Ble蓝牙App(一)扫描

Ble蓝牙App&#xff08;一&#xff09;扫描 前言正文一、基本配置二、扫描准备三、扫描页面① 增加UI布局② 点击监听③ 扫描处理④ 广播处理 四、权限处理五、扫描结果① 列表适配器② 扫描结果处理③ 接收结果 六、源码 前言 关于低功耗的蓝牙介绍我已经做过很多了&#xff0…

FlinkSql维表join之Temporal table join

什么是维表join&#xff1f; 对于每条流式数据&#xff0c;可以关联一个外部维表数据源&#xff0c;为FlinkSql实时计算提供数据关联查询。 说明&#xff1a; 维表是一张不断变化的表&#xff0c;在维表JOIN时&#xff0c;需指明该条记录关联维表快照的时刻。维表JOIN仅支持对…

native webrtc支持切换音频采集设备和获取裸流

https://www.yuque.com/caokunchao/rtendq/oq8w3qgs3g59whru 前言 版本webrtc m96 1、修改webrtc m96代码&#xff0c;向外提供一个adm指针的接口出来 2、外部来获取指针进行设备的选择 3、外部获取音频裸流&#xff0c;麦克风或者扬声器的数据 修改webrtc代码 1、修改H:\w…

form-data 提交文件请求远程调用

文件请求方法 /*** 上传图文消息内的图片 获取url* 富文本内的图片** param file*/public static String uploadMediaGetUrl(File file) throws IOException {if (!file.exists()) {return null;}String responseData null;try {String url "http://localhost:8503/fil…