22.Python 操作目录

news/2024/7/10 0:56:18 标签: python, 目标检测

目录)

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

1. 认识路径

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

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

相对路径

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

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

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

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

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

python">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()函数获取一个文件的绝对路径。

python">'''
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()函数把多个路径拼接为一个路径。

  • 除第一个参数外,如果参数的首字母不是斜杆字符,则会被加上分隔符斜杆的前缀。
  • 如果所有参数没有一个是绝对路径,那么拼接的路径将是一个相对路径。
  • 如果有一个参数是绝对路径,则在它之前的所有参数均被舍弃,拼接的路径是一个绝对路径。
  • 如果有多个参数是绝对路径,则以参数列表中最后一个出现的绝对路径参数为基础,在它之前的所有参数均被舍弃,拼接的路径是一个绝对路径。
  • 如果最后一个参数为空字符串,则生成的路径将以’/'斜杆作为路径的后缀,表示拼接的路径是一个目录
python">'''
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()函数实现。

python">'''
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):检测指定路径是否为链接。

python"># 快速统计指定文件目录下所有文件类型的个数
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 = 0
            else:
                count = file_dict.get(file_extention)
        count += 1
        file_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):删除多级目录。
python">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)函数实现。

python">import shutil
shutil.rmtree('test')

5.遍历目录

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

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

python">'''
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.niftyadmin.cn/n/5232696.html

相关文章

【dnsmasq】DNSMasq优化指南(一)

引言 - 简要介绍DNSMasq的作用以及优化的目的。环境说明 - 描述适用的操作系统和DNSSmasq版本,以及前提条件。详细步骤 - 提供详细的配置步骤和示例。性能测试 - 介绍如何测试DNS解析速度和稳定性。安全考虑 - 强调安全配置和最佳实践。故障排除 - 提供常见问题的解…

Python面向对象①类与特殊方法【侯小啾python领航班系列(十九)】

Python面向对象①类与特殊方法【侯小啾python领航班系列(十九)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

【CTA认证】Android去掉系统应用开机默认使用定位

需求 安卓8设备过CTA认证,不能不请求就获取定位。 frameworks diff --git a/base/services/core/java/com/android/server/SensorNotificationService.java b/base/services/core/java/com/android/server/SensorNotificationService.java index 7f5befab..5d1b5…

微软与 OpenAI 宫斗大戏背后的故事【番外详细剖析篇】

​​微软和 OpenAI 曾精心制定了一个协议,目的是既要雄心勃勃又要确保安全地发布人工智能产品。然而,OpenAI 的董事会突然打破了所有这些精心策划的计划。 在感恩节前一个星期五的上午 11:30 左右,微软的首席执行官 Satya Nadella 正在和高层…

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 …

docker容器启用ipv6地址方法,用ipv6地址访问容器方法流程、创建一个nginx容器用ipv6地址访问测试流程

文章目录 docker容器启用ipv6地址方法Docker-Compose启用IPv6启用ipv6重启docker生效创建一个ipv6的docker网络创建容器测试v6地址使用ipv6的网络创建容器使用普通网络创建容器测试 创建一个nginx容器用ipv6地址访问测试容器创建ipv4地址验证ipv6地址访问验证修改nginx容器网页…

【动态规划】LeetCode-63.不同路径II

🎈算法那些事专栏说明:这是一个记录刷题日常的专栏,每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目,在这立下Flag🚩 🏠个人主页:Jammingpro 📕专栏链接&…

uniapp中解决swiper高度自适应内容高度

起因:uniapp中swiper组件swiper 标签存在默认高度是 height: 150px ;高度无法实现由内容撑开,在默认情况下,swiper盒子高度显示总是 150px 解决办法思路: 动态设置swiper盒子的高度,故需要获取swiper-item盒…