Python 从入门到实战29(目录的操作)

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

        上篇文章我们讨论了文件的打开、创建、关闭、读取的相关知识。今天我们将学习一下目录的相关操作知识。

目录也称为文件夹,用于分层保存文件如下:可以在工程-New-Directory,新建文件夹

 

1、os、os.path模块

pyhton 没有提供直接操作目录和文件的函数或者对象,需要使用内置的os及其子模块os.path来实现。

1)os 模块

os.name     #获取操作系统的类型,windows输出nt
os.linesep     #获取操作系统的换行符
os.sep      #获取操作系统使用路径的分隔符

os 模块提供的与目录相关的函数:

函数

说明

os.getcwd()

返回当前工作目录的字符串表示

os.listdir(path)

返回指定目录下的文件和子目录列表

os.mkdir(path)

创建一个新目录

os.rmdir(path)

删除一个空目录

os.path.exists(path)

检查路径是否存在

os.path.isdir(path)

检查路径是否是一个目录

os.path.isfile(path)

检查路径是否是一个文件

os.path.join(path, *paths)

将多个路径组件智能地连接起来

2)os.path 模块

os.path 模块提供的与目录相关的函数:

exists(path)

用于判断目录或者文件是否存在,存在就返回True,否在False

isdir(path)

用于判断是否是有效路径

os.path.getsize(path)

返回指定文件的大小(以字节为单位)

os.path.abspath(path)

返回指定文件的绝对路径

os.path.splitext(path)

将路径拆分为文件名和扩展名

os.path.basename(path)

从路径中提取文件名

os.path.dirname(path)

从一个路径中提取文件路径,不包括文件名

2、获取相对路径

首先,我们看一下当前目录,相对路径都是以当前目录来参考的。

import os   #导入模块
def main():
    print(os.getcwd())#输出当前目录

输出结果:D:\dewi\project2024\myListPractice\pythonProject1

如当前目录下有test_data.txt,如下图:

我们就可以通过相对路径打开它:

def main():
    print(os.getcwd())#输出当前目录
    with open(r"./test_data.txt","r") as file_data:
        print(file_data.read())

输出结果:

xiaomi,123456

xiaohua,135790

xiaohui,246810

3、获取绝对路径

绝对路径也就是使用文件或者指定文件的实际路径。

举例:

import os   #导入模块
def main():
    print(os.path.abspath("test_data.txt"))#获取文件或者目录的绝对路径

输出结果:D:\dewi\project2024\myListPractice\pythonProject1\test_data.txt

4、拼接路径

若是想将两个或者多个路径拼接到一起组成一个新的路径,可以使用os.path 模块提供的join()函数来实现。

使用方法:os.path.join(path1,path2,…)

import os   #导入模块
def main():

path1 = r'D:\dewi\project2024\myListPractice'
path2 = r'pythonProject1\test_data.txt'
print(os.path.join(path1,path2))#拼接路径

输出结果:D:\dewi\project2024\myListPractice\pythonProject1\test_data.txt

5、判断目录是否存在

判断给定的目录是否存在,可以使用os.path模块提供的exists()函数来完成,

语法参考: os.path.exists(path)

path----是需要判断的目录

返回值 ----如目录存在返回为True,否在返回为False

举例说明:

import os   #导入模块
def main():
    state = os.path.exists('D:\dewi\project2024\myListPractice') #是否存在
    print("目录是否存在:",state)

输出:True

也可以判断文件是否存在:

import os   #导入模块
def main():
    state = os.path.exists('test_data.txt')
    print("文件是否存在:",state)

输出:True

6、创建目录

python 中os模块提供了两个创建目录的函数,一个是创建一级目录,另一个是创建多级目录。

1)创建一级目录

使用函数:os.mkdir(path,mode=0o777)

参数说明:

path ----用于指定要创建的目录,可以是绝对路径,也可以是相对路径

mode----用于指定数值模式,默认值0o777,该参数在非UNIX系统上无效或者被忽略

举例说明:

import os   #导入模块
def main():
    #当前路径新建文件夹test_data
    if not os.path.exists("test_data"):   #判断文件是否存在
        os.mkdir("test_data")  #文件不存在就新建
    else:
        print("文件已存在")

执行第一次就增加了文件:

再次执行:

提示:文件已存在。

2)创建多级目录

使用方法:os.makedirs(name,mode=0o777)

参数说明:

name -----用于指定要创建的目录,可以是绝对路径,也可以是相对路径

mode---用于指定数值模式,默认值0o777,该参数在非UNIX系统上无效或者被忽略

举例说明:

os.makedirs(r"prc/test_prc") #当前目录新建

7、删除目录

在Python中,可以使用os模块中的rmdir()和removedirs()方法来删除空目录,或者使用shutil模块的rmtree()方法来删除非空目录。

以下是使用os模块删除目录的例子:

import os   #导入模块
def main():
    if os.path.exists(r"prc/test_prc"):  #判断是否存在
        os.rmdir(r"prc/test_prc")
    else:
        print("文件不存在")

第一次看到删除成功了,

第二次运行提示:文件不存在

今天先写学习到这里了,每天进步一点点。明天也要加油啊!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

智慧政务助力实现服务民生新突破

在数字化转型的浪潮中,中国移动紧密结合人工智能(AI)技术,推动政务服务的智能化升级。近日,中国移动正式发布政务大模型3.0版本,以科技创新提升政务效率,实现服务民生的新突破。 为什么…

从0到1训练私有大模型技能与应用实现

1.背景 近期,GPT大模型的发布给自然语言处理(NLP)领域带来了令人震撼的体验。随着这一事件的发生,一系列开源大模型也迅速崛起。依据一些评估机构的评估,这些开源模型大模型的表现也相当不错。一些大模型的评测情况可…

关于Pencils Protocol 近期市场活动,通读这篇就够!

Pencils Protocol是Scroll上综合性的DeFi协议,自9月18日开始其陆续在Tokensoft、Bounce、Coresky等平台开启DAPP通证的销售,并分别在短期内完成售罄。吸引了来自韩国、CIS、土耳其等70多个国家的5万多名认证用户,反响热烈, Pencil…

VMware搭建DVWA靶场

目录 1.安装phpstudy 2.搭建DVWA 本次搭建基于VMware16的win7系统 1.安装phpstudy 下载windows版本:小皮面板-好用、安全、稳定的Linux服务器面板! 安装后先开启mysql再开启apache,遇到mysql启动不了的情况,最后重装了phpstud…

一窥AI大模型奥秘:技术前沿与产业应用双轮驱动

在科技日新月异的今天,人工智能(AI)正以前所未有的速度重塑着我们的生活与工作方式。其中,AI大模型作为技术的最前沿,不仅引领着技术体系的革新,更是产业实践与未来趋势的关键所在。 近期,有幸…

YOLOv8+注意力机制+PyQt5玉米病害检测系统完整资源集合

资源包含可视化的玉米病害检测系统,基于最新的YOLOv8注意力机制训练的玉米病害检测模型,和基于PyQt5制作的可视玉米病害系统,包含登陆页面和检测页面,该系统可自动检测和识别图片或视频当中出现的七类玉米病害:矮花叶病…

Linux防火墙-什么是防火墙

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 什么是防火墙 我们想象一下把每台服务器当成一个小区,我们去访问另外一个小区的朋友,我们需要经过什…

黑马头条day4 自媒体文章自动审核

阿里云内容安全调用 其实这个接口调用不是很难 但是需要花钱 就没买 我开了按量计费 但是还是不行 所以就没测试 于是尝试自己写返回成功值 效果不好 后来发现不如直接在函数里边取消调用文字和图片审核 这样更简单 远程调用与降级处理 这里有个bug调试了好久 第一个就是总…

Cannon-es.js物理引擎中物体动力控制的深度探索

本文目录 前言1、cannon-es给物体施加力1.1 前置代码1.2 效果1.3 给小球施加力1. applyForce效果 2. applyImpulse效果 3. applyLocalImpulse效果 4. applyTorque效果 区别总结 前言 在三维物理引擎的世界里,Cannon-ES以其轻量级和高效能著称,为开发者提…

使用docker形式部署prometheus+alertmanager+钉钉告警

一、拉取所需要的镜像 docker pull prom/node-exporter docker pull grafana/grafana docker pull prom/prometheus docker pull prom/alertmanager 其中 prom/node-exporter:用于收集主机系统信息和指标的 grafana/grafana:是一个用于可视化和分…

NRF21540—低功耗蓝牙,蓝牙mesh、Thread和Zigbee和2.4 GHz私有协议范围扩展射频前端模块

nRF21540是一款射频前端模块(FEM),可用于改善短距离无线产品的传输范围和连接鲁棒性。作为一款辅助性设备,nRF21540是一种“即插即用型”的无线传输范围扩展器,可与nRF52和nRF53系列的高级多协议无线SoC搭配使用,所需的外部器件数…

11. Map和Set

一、二叉搜索树 1. 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根…

解析 Pencils Protocol 价值逻辑,$DAPP为何是本轮的Alpha资产?

本轮市场周期中,DeFi市场已经长期处于边缘位置,老牌蓝筹DeFi通证仍旧能维持高市值但币价增长,而很多新生代DeFi项目创新不足难以推动叙事的发展,面向市场后难有亮眼表现,DeFi市场再难寻Alpha投资机会。 而随着Pencils …

C语言指针系列1——初识指针

祛魅:其实指针这块儿并不难,有人说难只是因为基础到进阶没有处理好,大家要好好跟着一步一步学习,今天我们先来认识一下指针 指针定义:指针就是内存地址,指针变量是用来存放内存地址的变量,在同一…

在Windows系统上安装的 Boost C++ 库

步骤一 https://www.boost.org/users/history/version_1_86_0.html 下载Boost库文件: 步骤二 安装: https://www.boost.org/doc/libs/1_52_0/doc/html/bbv2/installation.html 点击运行.\bootstrap.bat脚本在当前目录的powershell中执行:./b2 install --prefixPREFIX 然后…

【必看】2024国赛选题分布情况分析及数模国赛答辩指南~答辩不走弯路

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 紧张刺激的数模国赛已经过去一段时间,各赛区的成绩发布也在陆续进…

springboot+satoken实现刷新token(值变化)

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 springbootsatoken实现刷新token satoken是什么?支持什么?为什么需要&…

内网穿透的应用-Windows系统安装SeaFile并实现远程访问本地共享文件资料详细教程

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 下载安装3.2 Cpolar注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 本文主要为大家介绍,如何使用两个简单软件…

【Kotlin 集合概述】可变参数vararg、中缀函数infix以及解构声明(二十)

导读大纲 1.1 使用集合: vararg、infix 调用和解构声明1.1.1 扩展 Java 集合 API1.1.2 vararg: 接受任意数量参数的函数1.1.3 处理pairs: Infix 调用和解构声明 1.1 使用集合: vararg、infix 调用和解构声明 本节将介绍 Kotlin 标准库中用于处理集合的一些函数 同时,还介绍一些…

Vue3+Element-UI Plus登录静态页

<script setup> import {reactive, ref} from "vue";const formRefref() const formModelreactive({username:,password: }) const formRulesreactive({username:[{required:true,message:请输入账号,trigger:blur}],password:[{required:true,message:请输入密…