22.Python 操作目录

目录)

    • 1. 认识路径
      • 相对路径
      • 绝对路径
    • 2. 拼接路径
    • 3.检测目录
    • 4.创建和删除目录
    • 5.遍历目录

1. 认识路径

目录也称文件夹,用于分层保护文件,通过目录可以分门别类地存放文件,也可以通过目录快速地找到想要的文件,在Python中并没有提供直接操作目录的函数或者对象,而是需要使用内置的osos.path模块实现。

用于定位一个文件或者目录的字符串被称为一个路径,在程序开发的时候,通常会涉及两种路径:一种是相对路径,另一种是绝对路径。

相对路径

当前工作目录是指当前文件所在的目录。可以通过os模块提供的getcwd()函数获取当前工作目录。

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

相对路径就是依赖当前的工作目录,如果在当前工作目录下有一个名称为message.txt的文件,那么在打开这个文件时,就可以直接写上文件名,这时采用的就是相对路径。

在路径中,注意下面3个特殊符号的语义:
/:表示根目录,在Windows系统下表示某个盘的根目录,如’E:‘。
.:表示当前目录,也可以写成’./‘。在当前目录中可以直接写文件名或者下级目录。
..:表示上级目录,也可以写成’…/'。

分别使用’/‘、’./‘和’…/'打开文本文件,然后执行写入操作。

f = open('test1.txt','w')
f.write('当前目录')
f.close()
f = open('/test2.txt','w')
f.write('根目录')
f.close()
f = open('./test3.txt','w')
f.write('当前目录1')
f.close()
f = open('../test4.txt','w')
f.write('上级目录')
f.close()

绝对路径

绝对路径是指在使用文件时指定文件的实际路径,他不依赖于当前工作目录,可以通过os.path模块提供的abspath()函数获取一个文件的绝对路径。

'''
os.path.abspath(path)
path 为要获取绝对路径的相对路径,可以是文件,也可以是目录。
'''
import os
path1 = os.path.abspath('.') # 获取当前所处的文件夹绝对路径
print(path1) # /Users/guanfawang/Python_Language/file_operations
path2 = os.path.abspath('..') # 表示当前文件夹的上一级文件夹的绝对路径
print(path2) # /Users/guanfawang/Python_Language

‘‘字符具有转义功能,可以使用’\‘替换,也可以使用’/‘代替’’。更简单的方法是在字符串前面加R或r前缀。

2. 拼接路径

当把多个路径拼接为一个路径时,不建议直接使用字符串拼接。因为在Linux、Unix系统下,路径分隔符是斜杆’/‘;在Windows系统下,路径分隔符是反斜杠’‘,也可以兼容’/‘;在Mac OS系统中,路径分隔符是冒号’/'。

一般使用os.path子模块提供的join()函数把多个路径拼接为一个路径。

  • 除第一个参数外,如果参数的首字母不是斜杆字符,则会被加上分隔符斜杆的前缀。
  • 如果所有参数没有一个是绝对路径,那么拼接的路径将是一个相对路径。
  • 如果有一个参数是绝对路径,则在它之前的所有参数均被舍弃,拼接的路径是一个绝对路径。
  • 如果有多个参数是绝对路径,则以参数列表中最后一个出现的绝对路径参数为基础,在它之前的所有参数均被舍弃,拼接的路径是一个绝对路径。
  • 如果最后一个参数为空字符串,则生成的路径将以’/'斜杆作为路径的后缀,表示拼接的路径是一个目录
'''
os.path.join(path1[,path,...])
'''
import os
path1 = 'home'
path2 = 'develop'
path3 = 'code'
path4 = ''
path5 = os.path.join(path1,path2,path3)
print(path5) # home/develop/code
path6 = os.path.join(path1,path2,path4)
print(path6) # home/develop/

3.检测目录

判断给定的目录是否存在,可以使用os.path模块的exists()函数实现。

'''
os.path.exists(path)
'''
import os
b = os.path.exists('test') # 判断当前目录下是否存在test文件夹
print(b) # False

exists()函数不区分路径是目录还是文件,如果要区分指定路径是目录、文件、链接,或者为绝对路径,可以使用下面的专用函数。
os.path.isabs(path):检测指定路径是否为绝对路径。
os.path.isdir(path):检测指定路径是否为目录。
os.path.isfile(path):检测指定路径是否为文件。
os.path.isline(path):检测指定路径是否为链接。

# 快速统计指定文件目录下所有文件类型的个数
import os
def count_filetype(file_path):file_dict={}file_list=os.listdir(file_path)for file in file_list:pathname = os.path.join(file_path,file)if os.path.isfile(pathname):(file_name,file_extention) = os.path.splitext(file)if file_dict.get(file_extention) == None:count = 0else:count = file_dict.get(file_extention)count += 1file_dict.update({file_extention:count})for key,count in file_dict.items():print('\"%s\"文件夹下类型为\"%s\"的文件共有\"%s\"个'%(file_path,key,count))
count_filetype(r'/Users/guanfawang/Python_Language') # 打印信息
'''
"/Users/guanfawang/Python_Language"文件夹下类型为".md"的文件共有"1"个
'''

4.创建和删除目录

os模块提供了两个创建目录的函数:一个是创建一级目录(单个目录),另一个用于创建多级目录(多个目录)。

  • os.mkdir(path,mode=0777):创建单个目录。
  • os.rmdir(path):删除单个目录。
  • os.makedirs(path,mode=0777):创建多级目录。
  • os.removerdirs(path):删除多级目录。
import os
path1 = 'test' # 定义单级目录
if not os.path.exists(path1):os.mkdir(path1) # 创建一级目录
if os.path.exists(path1):os.rmdir(path1) # 删除一级目录
path2 = 'test/sub_test' # 定义多级目录
if not os.path.exists(path2):os.makedirs(path2) # 创建多级目录
if os.path.exists(path2):os.removedirs(path2) # 删除多级目录

rmdir()removedirs()函数只能删除空目录。如果要删除非空目录,可以使用shutil模块的rmtree(path)函数实现。

import shutil
shutil.rmtree('test')

5.遍历目录

遍历就是对指目录下的全部目录(包括子目录)及文件运行一遍。

os模块提供了walk()函数,可用于目录的遍历;

'''
os.walk(top,topdown=True,οnerrοr=None,followlines=False)
'''
import os
def visitDir(path): for root,dirs,files in os.walk(path): # 遍历目录for filepath in files: # 遍历文件print(os.path.join(root,filepath)) # 输出文件的完整路径
visitDir('/Users/guanfawang/Python_Language/file_operations') 

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

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

相关文章

每天一点python——day83

#每天一点Python——83 #python报错原因 bug: 在计算机程序中,bug是指程序中的错误或故障,导致程序不能按照预期执行或产生不正确的结果。 这种错误可能是由编码或设计错误、运行环境不一致、输入数据异常等多种原因导致的。常见的bug类型包括…

密码学实验三

第一题: 寻找满足特定条件的 e; 第一步: 第二步: 由式1.7知,给定e,p,q,就可计算出相应的RSA不动点的数目。因此设计算法步骤如下: 枚举找出所有与φ(n)互素的e。枚举所有满足条件的e&#xff…

oracle 去重

Oracle去重 在Oracle中进行去重的SQL语句有以下几种: 1.使用DISTINCT关键字 使用SELECT DISTINCT列名 FROM 表名来选择唯一的值。例如:SELECT DISTINCT column_name FROM table_name; 2.使用GROUP BY子句 使用GROUP BY子句将重复的值分组&#xff0…

为XiunoBBS4.0开启redis缓存且支持密码验证

修改模块文件1 xiunoPHP/cache_redis.class.php: <?phpclass cache_redis {public $conf array();public $link NULL;public $cachepre ;public $errno 0;public $errstr ;public function __construct($conf array()) {if(!extension_loaded(Redis)) {return $thi…

HTTP 基本概念(计算机网络)

一、HTTP 是什么&#xff1f; HTTP(HyperText Transfer Protocol) &#xff1a;超文本传输协议。 HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。 「HTTP 是用于从互联网服务器传输超文本到本地浏览器的协议…

Linux部分基础指令讲解

目录 1.echo指令 2.more指令 3.less指令&#xff08;重要&#xff09; 4.head指令 5.tail指令 6.管道| 7.时间相关的指令 8.cal指令 9.find指令 10.grep指令 1.echo指令 我们先看效果 如图所示我们可以看到显示器显示出了hellow world和hellow这两句话&#xff0c;我们的echo的…

51单片机对SHT30的驱动,读取温湿度

一、SHT30简介 SHT30温湿度传感器是一种数字式温湿度传感器&#xff0c;由Sensirion公司开发和生产。它具有高精度、快速响应和稳定性强的特点&#xff0c;被广泛用于气象观测、室内环境监测、智能家居和工业自动化等领域。 以下是SHT30温湿度传感器的主要特点&#xff1a; 高精…

简单句子成分、阅读技巧

四、段落的主旨题&#xff1a;问这一段讲了什么&#xff08;一般都在段落的第一句话或最后一句话&#xff09; 词汇题的答案一般都在生词的上一句或者下一句 做题步骤&#xff1a; 1、先标段落 2、看题&#xff0c;划出关键词 3、去原文定位&#xff0c;标注中文意思 4、第一遍…

Dart编程基础 - 一种新的编程语言

Dart编程基础 – 一种新的编程语言 Dart Programming Essentials - A New Type of Programming Language By JacksonML Dart is a client-optimized language for fast apps on any platform From dart.dev 在1999年之前&#xff0c;和我一样对计算机技术感兴趣的伙伴们&…

1094. 拼车(差分堆排序)

Problem: 1094. 拼车 文章目录 题目思路Review 差分数组定义区间加法减法更新差分数组&#xff1a;为啥这样更新 思路1 Code思路2 Code 题目 车上最初有 capacity 个空座位。车 只能 向一个方向行驶&#xff08;也就是说&#xff0c;不允许掉头或改变方向&#xff09; 给定整…

高级前端面试中的三个 “送命题” !!!

原型与原型链 说到原型&#xff0c;就不得不提一下构造函数&#xff0c;首先我们看下面一个简单的例子&#xff1a; function Dog(name,age){this.name name;this.age age; }let dog1 new Dog("哈士奇",3); let dog2 new Dog("泰迪",2);首先创造空的…

Mybatis-plus逻辑删除

转载自:www.javaman.cn 1、application.yml配置 mybatis-plus: 表示这是 MyBatis-Plus 的配置部分。global-config: 全局配置。db-config: 数据库相关配置。logic-delete-field: 指定逻辑删除的字段名。在这里&#xff0c;指定的字段名是 deleted。这意味着&#xff0c;当你调…

《算法通关村——滑动窗口高频问题》

《算法通关村——滑动窗口高频问题》 239. 滑动窗口最大值 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#…

机械臂运动规划、抓取末端执行器、抓取开源项目

运动规划 1.1已有抓取点 假设抓取点已检测到。这些方法设计了从机器人手到目标物体抓取点的路径。这里运动表示是关键问题。虽然存在从机器人手到目标抓握点的无限数量的轨迹&#xff0c;但是由于机器人臂的限制&#xff0c;许多区域无法到达。因此&#xff0c;需要对轨迹进行…

Hdoop学习笔记(HDP)-Part.01 关于HDP

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

python etree.HTML 以及xpath 解析网页的工具

文章目录 导入模块相关语法实战 导入模块 from lxml import etree相关语法 XPath&#xff08;XML Path Language&#xff09;是一种用于在XML文档中定位和选择元素的语言。XPath的主要应用领域是在XML文档中进行导航和查询&#xff0c;通常用于在XML中选择节点或节点集合。以…

js 处理编译器html 包含img的标签并设置width

var imgElements document.getElementsByTagName(img); for (let imgElement of imgElements) { //1.如果有style属性,去掉style属性中的width属性和height属性 if (imgElement.hasAttribute(st…

UiPath学习笔记

文章目录 前言RPA介绍UiPath下载安装组件内容 前言 最近有一个项目的采集调研涉及到了客户端的采集&#xff0c;就取了解了一下RPA和UIPATH&#xff0c;记录一下 RPA介绍 RPA&#xff08;Robotic Process Automation&#xff1a;机器人处理自动化&#xff09;&#xff0c;是…

【影视后期扩展课-01】

影视后期扩展课-01 福利网站 福利网站 【电影下载】 ■皮皮虾资源&#xff1a;https://ppxzy.net/ ■电影港网&#xff1a;https://www.dyg5.com/ ■人人网&#xff1a;https://www.rrdynb.com/index.html ■高清MP4&#xff1a;https://mp4fan.org/member.php?modlogging&am…

使用Zabbix监控openstack的系统资源

1 简介 对于Openstack运维人员来说&#xff0c;需要掌握Openstack云平台系统资源的整体运行情况&#xff0c;包括域(AZ)的cpu/menmory等资源使用情况&#xff1b;本文将介绍使用zabbix结合openstack python-api对openstack系统资源进行监控。 2 使用控制台获取域(AZ)监控信息 …