【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/16821.shtml

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

相关文章

Day03-作业(AxiosElementUI)

作业1&#xff1a; 根据需求完成如下页面数据列表展示 需求&#xff1a;Vue挂载完成后,通过axios发送异步请求到服务端,获取学生列表数据,并通过Vue展示在页面上 获取数据url&#xff1a;http://yapi.smart-xwork.cn/mock/169327/student 素材&#xff1a; <!DOCTYPE html…

springboot2实现图片文件上传与mysql存储路径并回显

环境介绍 技术栈 springbootmybatismysql 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis 2.3.1 springboot是基于spring 4.0&#xff0c;springboot2是基于spring5.0,springboot2由pivotal公司在2018发布,这个框架主要用来…

螺旋矩阵 II——力扣59

文章目录 题目描述法一 模拟 题目描述 法一 模拟 初始化一个二维向量&#xff0c;名为matrix&#xff0c;它有n行和n列。向量的每个元素都是一个整数&#xff0c;初始化为0。初始化二维向量的语法如下&#xff1a;vector<vector<int>> matrix(n, vector<int>…

WPS本地镜像化在线文档操作以及样例

一个客户项目有引进在线文档操作需求&#xff0c;让我这边做一个demo调研下&#xff0c;给我的对接文档里有相关方法的说明&#xff0c;照着对接即可。但在真正对接过程中还是踩过不少坑&#xff0c;这儿对之前的对接工作做个记录。 按照习惯先来一个效果&#xff1a; Demo下载…

【phaser微信抖音小游戏开发002】hello world!

执行效果&#xff1a; 将以下代码文本内容&#xff0c;放入到game.js中即可。目录结构如下图 import ./js/libs/weapp-adapter import ./js/libs/symbolGameGlobal.window.scrollTo () > { };//防止真机出错 import Phaser from ./js/phaser//引入Phaservar {windowWidth, …

vue项目环境 搭建

1、安装nodejs 2、安装vue-cli, npm i -g vue/cli-init 3、初始化项目 vue init webpack test 4、运行 cd test npm run dev

无人机影像配准并发布(共线方程)

无人机影像 DEM 计算四个角点坐标&#xff08;刚性变换&#xff09; 像空间坐标&#xff08;x,y,-f&#xff09; 像空间坐标畸变纠正 deltax,deltay 已知(x,y)&#xff0c;求解(X,Y, Z)或者(Lat,Lon) 这里的Z是DEM上获取的坐标和Zs为相机坐标的高程&#xff0c;如果均为已…

应用无线鼠标中的2.4GHz无线收发芯片

无线键盘和无线鼠标作为现代办公环境中常见的工具&#xff0c;为我们的工作带来了便利。无线键盘和无线鼠标的工作原理都是基于无线技术实现的&#xff0c;其中常见的是2.4GHz无线技术。让我们一起来详细了解一下它们的工作原理。 无线鼠标的原理非常简单,鼠标部分工作与传统鼠…

html富文本编辑器

接了个单子&#xff0c;需要添加一个文章模块&#xff0c;一看用到的技术这么老&#xff0c;人傻了&#xff0c;纯html css js 。 在普通页面中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"…

为Win12做准备?微软Win11 23H2将集成AI助手:GPT4免费用

微软日前确认今年4季度推出Win11 23H2&#xff0c;这是Win11第二个年度更新。 Win11 23H2具体有哪些功能升级&#xff0c;现在还不好说&#xff0c;但它会集成微软的Copilot&#xff0c;它很容易让人想到多年前的“曲别针”助手&#xff0c;但这次是AI技术加持的&#xff0c;Co…

一些高频的C++ cache line面试

C那些事之False Sharing与Cache line 最近看到一段代码&#xff0c;手动做的对齐&#xff0c;于是研究一下不对齐又会带来什么影响&#xff1f; template <typename T> class AtomicWithPadding {private:static constexpr int kCacheLineSize 64;uint8_t padding_befor…

牛客网Verilog刷题——VL46

牛客网Verilog刷题——VL46 题目解析答案 题目 根据题目提供的双口RAM代码和接口描述&#xff0c;实现同步FIFO&#xff0c;要求FIFO位宽和深度参数化可配置。电路的接口如下图所示。   双口RAM端口说明&#xff1a; 同步FIFO端口说明&#xff1a; 双口RAM代码如下&#xff…

网络安全 Day24-select高级用法和多表连接

select高级用法和多表连接 1. select 多子句单表高级实践1.1 select 多子句高级语法1.2 聚合函数1.3 group by 实践1.4 having 筛选1.5 order by 排序1.6 limit 2. 多表连接 1. select 多子句单表高级实践 1.1 select 多子句高级语法 where 和 having 区别是后者是分组后进行…

邪恶版ChatGPT来了!

「邪恶版」ChatGPT 出现&#xff1a;每月 60 欧元&#xff0c;毫无道德限制&#xff0c;专为“网络罪犯”而生。 WormGPT 并不是一个人工智能聊天机器人&#xff0c;它的开发目的不是为了有趣地提供无脊椎动物的人工智能帮助&#xff0c;就像专注于猫科动物的CatGPT一样。相反&…

【C++入门到精通】C++入门 —— 类和对象(构造函数、析构函数)

目录 一、类的6个默认成员函数 二、构造函数 ⭕构造函数概念 ⭕构造函数的特点 ⭕常见构造函数的几种类型 三、析构函数 ⭕析构函数概念 ⭕析构函数的特点 ⭕常见析构函数的几种类型 四、温馨提示 前言 这一篇文章是上一篇的续集&#xff08;这里有上篇链接&#xff09;…

Flink非对齐checkpoint原理(Flink Unaligned Checkpoint)

Flink非对齐checkpoint原理&#xff08;Flink Unaligned Checkpoint&#xff09; 为什么提出Unaligned Checkpoint&#xff08;UC&#xff09;&#xff1f; 因为反压严重时会导致Checkpoint失败&#xff0c;可能导致如下问题 恢复时间长-服务效率低非幂等和非事务会导致数据…

5分钟快手入门laravel邮件通知

第一步&#xff1a; 生成一个邮件发送对象 php artisan make:mail TestMail 第二步&#xff1a; 编辑.env 添加/修改&#xff08;没有的key则添加&#xff09; MAIL_DRIVERsmtp MAIL_HOSTsmtp.163.com &#xff08;这里用163邮箱&#xff09; MAIL_PORT25 &#xff08;163邮箱…

C# SourceGenerator 源生成器初探

简介 注意&#xff1a; 坑极多。而且截至2023年&#xff0c;这个东西仅仅是半成品 利用SourceGenerator可以在编译结束前生成一些代码参与编译&#xff0c;比如编译时反射之类的&#xff0c;还有模板代码生成都很好用。 演示仓库传送门-Github-yueh0607 使用 1. 创建项目 …

flutter 导出iOS问题2

问题1:The Swift pod FirebaseCoreInternal depends upon GoogleUtilities, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries) 参考 正如上图报错第三方…

AI生成式视频技术来临:Runway Gen-2文本生成视频

Runway Gen-2的官方网站提供了一种文本生成视频的工具。以下是对该工具的介绍&#xff1a; 文本生成视频&#xff1a;Runway Gen-2是一个创新的在线工具&#xff0c;可以将文本转化为视频。用户只需输入文本描述或句子&#xff0c;Runway Gen-2就能自动生成相应的视频内容。这…