目录

前言

一、操作文件路径

1.获取当前路径

2.创建文件夹

(1)mkdir()函数

(2)makedirs() 函数

3.拼接路径

4.跳转路径

5.判断相对路径和绝对路径

6.获取文件路径和文件名

 二、操作文件和文件夹

1.查询文件大小

2.删除文件和文件夹

3.重命名文件或文件夹

4.复制文件

5.获取文件夹中的全部文件名

6.判断文件和文件夹


前言

Python标准库提供了os库来管理操作系统相关功能,无须下载、安装,os库包含丰富的操作文件的方法,可以通过import os导入库之后使用dir(os)查询获取。


一、操作文件路径

1.获取当前路径

os库中的getcwd()函数可用于获取当前代码所在文件夹的绝对路径(不包含代码文件名)。

示例代码:

import os
print(os.getcwd())

代码执行结果:

E:\书代码\第9章

2.创建文件夹

os库中有两种用于创建文件夹的函数,分别为mkdir()函数和makedirs()函数。

(1)mkdir()函数

在os库中使用mkdir(路径)函数可以实现在路径中创建一个新的文件夹。 示例代码:

import os 02 os.mkdir(r'E:\书代码\第9章\数据1')

注意,必须保证“E:\书代码\第9章”这个路径是正确的,否则会无法创建新文件夹。例如将以上代码第2行中的路径修改为“E:\书代码1”,由于并不存在“书代码1”这个文件夹,因此无法在“书代码1”文件夹中创建新的文件夹,执行代码后将输出报错信息。


(2)makedirs() 函数

在os库中makedirs(路径)函数是根据参数来递归创建文件夹,递归表示根据路径创建包含的全部文件夹。 示例代码:

import os
os.makedirs(r'E:\书代码1\数据1\内容b')

第2行代码使用makedirs()函数创建了文件夹,由于E盘下并没有文件夹“书代码1”,因此代码执行之后会在E盘中连续创建3个文件夹,其中“书代码1”文件夹包含“数据1”文件夹,“数据1”文件夹包含“内容b”文件夹。

因此mkdir()函数和makedirs()函数的区别在于是否可以递归创建文件夹。

示例代码(批量创建200个文件夹):

import os
for i in range(1, 201):file_name = '文件夹' + str(i)file_path = os.getcwd() + '\数据1\' + file_nameos.mkdir(file_path)

3.拼接路径

使用os.path.join()方法可以实现将参数拼接为目录路径,从而方便且快速地获取文件地址。

示例代码:

import os
dir_new = os.path.join(os.getcwd(), '数据2', '内容c')
print(dir_new, type(dir_new))

第2行代码中的os.getcwd()函数用于获取当前代码所在文件夹的路径,os.path.join()方法将当前路径、'数据2'和'内容c'以路径的形式进行拼接(无须考虑构成路径的转义字符等问题)。

代码执行结果:

 E:\书代码\第9章\数据2\内容c <class 'str'>

4.跳转路径

如果需要在程序中实现从当前代码所在文件夹路径跳转到其他路径,可以使用os库中的chdir(路径)函数,但要注意路径必须是已经存在的,否则运行代码后会出现报错。

示例代码:

import os
print(os.getcwd())
os.chdir('E:\书代码\第9章\数据2')
print(os.getcwd())

第3行代码使用os.chdir()将当前工作路径修改为“E:\书代码\第9章\数据1”,即改变了当前工作路径的唯一性。修改当前工作路径是为了便于后期可以使用相对路径操作新路径下的文件。

代码执行结果:

E:\书代码\第9章
E:\书代码\第9章\数据1

5.判断相对路径和绝对路径

使用os.path.isabs(path)方法可以判断当前路径是相对路径还是绝对路径。

示例代码:

import os
a = os.path.isabs('数据2\内容c')
b = os.path.isabs('E:\书代码')
print(a, b)

第2行和第3行代码分别判断路径是绝对路径还是相对路径,如果是绝对路径将返回True,如果是相对路径将返回False。

代码执行结果:

False True

6.获取文件路径和文件名

os库的path模块下的basename(path)方法可用于获取路径中的文件名,dirname(路径)方法可用于获取路径中的文件夹路径,split(路径)方法可用于将获取的文件夹路径和文件名以元组的形式返回。

示例代码:

import os
path = r'E:\书代码\数据2\内容c\Python程序代码1.txt'
file_name = os.path.basename(path)
dir_name = os.path.dirname(path)
file_dir_name = os.path.split(path)
print(file_name, '\n', dir_name, '\n', file_dir_name)

第3行代码获取路径中的文件名,第4行代码获取文件夹路径,第5行代码获取文件夹路径和文件名并以元组形式返回。

代码执行结果:

Python程序代码1.txt
E:\书代码\数据2\内容c
('E:\书代码\数据2\内容c', 'Python程序代码1.txt')

 二、操作文件和文件夹

1.查询文件大小

使用os库的path模块下的getsize(path)丰富可以获取路径中的文件所占用内存的大小,单位为字节。

示例代码:

import os
path = r'E:\书代码\数据2\内容c\Python程序代码1.txt'
print(os.path.getsize(path))

该代码用于获取Python程序代码1.txt文件的大小,执行代码后的输出结果为962,单位为字节(1024个字节为1KB)。


2.删除文件和文件夹

os库中的remove(path)方法可用于删除path中的文件。

示例代码:

import os
os.remove(r'E:\书代码1\数据1\内容b\dwed.txt')

如果在文件夹“E:\书代码1\数据1\内容b”中存在一个dwed.txt文件,执行第2行代码后,该文件将会被删除。

os库中的rmdir(path)方法可用于删除path中的最后一层文件夹,不能递归删除整个path的全部文件夹。

示例代码:

import os
os.rmdir('数据3\内层1')

执行该代码后将会删除“内层1”文件夹。


3.重命名文件或文件夹

使用os库中的rename()和renames()函数即可实现对文件或文件夹进行重命名。其使用形式如下:

os.rename(src, dst)
os.renames(src, dst)

功能: rename()函数修改指定文件夹或文件的名称,renames()函数递归修改文件夹或文件的名称。

参数src: 表示要修改的文件夹路径或文件路径。

参数dst: 表示修改后的文件夹路径或文件路径。

示例代码(将图9-1所示的所有文件夹名序号增大200):

import os
for i in range(1, 201):old = 'E:/书代码/第9章/数据1/文件夹' + str(i)new = 'E:/书代码/第9章/数据1/文件夹' + str(i + 200)os.rename(old, new) # 对文件或文件夹进行重命名
os.renames('E:/书代码/第9章/数据1/文件夹201', 'E:/书代码/第9章/数据2/文件夹201')

第2~5行代码使用for循环200次,分别获取要修改的路径old和修改后的路径new,并使用rename()函数修改文件夹名称。 第6行代码使用renames()函数将前面第2~5行代码执行后得到的文件夹“E:/书代码/第9章/数据1/文件夹201”递归修改为“E:/书代码/第9章/数据2/文件夹201”,从而间接实现了文件的移动功能


4.复制文件

os库中的os.link()函数可用于创建硬链接以实现复制文件。其使用形式如下:

os.link(src, dst)

参数src: 表示要修改的文件夹路径或文件路径。

参数dst: 表示修改后的文件夹路径或文件路径。

示例代码(将文件复制到另一个路径中):

import os
os.link('E:/书代码/报告合集.pdf', 'E:/书代码/数据1/报告合集.pdf')

执行代码后即可将“报告合集.pdf”文件复制到“E:/书代码/数据1”路径中。


5.获取文件夹中的全部文件名

使用os库中的listdir(路径)方法即可获取文件夹中的全部文件名(包含文件和文件夹的名称)。

示例代码:

import os
print('相对路径中有:', os.listdir('.'))

代码执行结果:

相对路径中有: ['数据1', '数据2', '第9章第1个程序.py', '第9章第3个程序.py', '第9章第5个程序.py']

代码结果是以列表的形式输出的路径中的全部内容,其中数据1、数据2和数据3是文件夹,其余内容均为文件。

在办公领域中,获取文件夹中的全部文件是较为常见的操作,当需要对一系列的文件进行操作时,可以先将这一系列的文件存放在同一个文件夹中,然后通过os.list()方法遍历并获取文件,再对文件进行操作。

示例代码(统计当前文件夹中所有文件占用空间的大小):

import os
file_total_size = 0
for file_name in os.listdir('.'):file_dir = os.path.join(os.getcwd(), file_name)file_total_size += os.path.getsize(file_dir)
print(file_total_size/1024)

第2行代码使用file_total_size来统计所有文件占用的空间,初始时为0。

第3行代码使用os.listdir('.')获取文件夹内所有文件的名称,并以列表的形式返回作为循环内容,依次赋值给变量file_name。

第4行代码构建每个文件的完整路径,包含路径和文件名。

第5行代码通过getsize()方法获取文件的大小,并将其累加到file_total_size变量中。循环结束后输出file_total_size/1024的值,输出的值的单位为KB。

代码执行结果:

45.3408203125

结果表明此文件夹一共约占45KB的内存。


6.判断文件和文件夹

os库中提供了以下3种用于判断path是文件还是文件夹的方法。

第1种,os.path.exists(path)。判断path所指的文件或文件夹是否存在,如果存在则返回True,否则返回False。

第2种,os.path.isfile(path)。判断path是否为文件,如果是文件则返回True,否则返回False。

第3种,os.path.isdir(path)。判断path是否为文件夹,如果是文件夹则返回True,否则返回False。

示例代码:

import os
path = r'E:\书代码\数据2\内容c\Python程序代码1.txt'
print(os.path.exists(path), end='\t')
print(os.path.isfile(path), end='\t')
print(os.path.isdir(path), end='\t')

该代码分别使用了这3种方法来判断变量path表示的路径。

代码执行结果:

True True False

注意,当文件夹存在但文件夹中的文件不存在时,执行3种方法后都会返回False。

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

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

相关文章

015_引用功能与信息溯源

引用功能与信息溯源 目录 引用功能概述支持的模型引用类型API使用方法引用格式应用场景最佳实践 引用功能概述 什么是引用功能 Claude的引用功能允许在回答基于文档的问题时提供详细的信息来源引用&#xff0c;帮助用户追踪和验证信息的准确性。这个功能特别适用于需要高可…

ROS2中的QoS(Quality of Service)详解

ROS2中的QoS&#xff08;Quality of Service&#xff09;详解1. 主要QoS参数2. 为什么需要设置QoS3. QoS兼容性规则4. 选择QoS策略的建议5. 调试QoS问题的方法6. 踩坑&#xff1a;订阅话题没有输出可能的原因&#xff1a;调试方法QoS是ROS2中用于控制通信质量和行为的机制。它定…

Cursor三大核心AI功能

一&#xff1a;Tab键&#xff1a;智能小助手 1.1 单行/多行代码补全 在代码中写出要实现的功能&#xff0c;第一次按Tab生成代码&#xff0c;第二次按Tab接受代码。1.2 智能代码重写 对已有代码重新编写。 写个注释告诉AI重构方法&#xff0c;然后鼠标点到方法内部&#xff0c;…

cesium添加原生MVT矢量瓦片方案

项目中需要基于cesium接入mvt格式的服务并支持属性拾取查询&#xff0c;通过一系列预研测试&#xff0c;最后选择cesium-mvt-imagery-provider开源插件完成&#xff0c;关键源码信息如下&#xff1a; npm i cesium cesium-mvt-imagery-provider //安装依赖包// 加载图层import…

AI金融风控:识别欺诈,量化风险的新利器

AI金融风控&#xff1a;识别欺诈&#xff0c;量化风险的新利器深度学习算法穿透海量交易数据&#xff0c;92.5%的不良贷款识别率宣告了金融风险防控新时代的来临。深圳桑达银络科技有限公司在2025年6月申请的“基于人工智能的金融交易反欺诈系统”专利&#xff0c;揭示了金融风…

【unitrix】 5.0 第二套类型级二进制数基本结构体(types2.rs)

一、源码 这是一个使用 Rust 类型系统实现类型级(type-level)二进制数的设计。 //! 类型级二进制数表示方案&#xff08;第二套方案&#xff09; //! //! 使用嵌套泛型结构体表示二进制数&#xff0c;支持整数和小数表示。use crate::sealed::Sealed;/// 类型级二进制数结构体 …

DAY01:【ML 第一弹】机器学习概述

一、三大概念 1.1 人工智能&#xff08;AI&#xff09; Artificial Intelligence 人工智能AI is the field that studies the synthesis and analysis of computational agents that act intelligently 1.2 机器学习&#xff08;ML&#xff09; Machine Learning 机器学习Fi…

AGX Xavier 搭建360环视教程【一、先确认方案】

设备默认自带 NVIDIA 硬件编解码能力&#xff08;NVDEC/NVENC&#xff09;&#xff0c;但是需要你在 OpenCV 和 FFmpeg 里正确启用 调通 GStreamer 或 nvmpi&#xff0c;才真正能用起来&#xff01;这里的硬解码是核心&#xff1a;Jetson 平台的硬解码&#xff0c;要么走 GStr…

服务器怎么跑Python项目?

在服务器上运行 Python 项目通常涉及 环境配置、依赖安装、项目部署 和 进程管理。以下是详细步骤&#xff1a;1. 连接服务器确保你能通过 SSH 访问服务器&#xff1a;ssh usernameyour_server_ip&#xff08;如果是本地测试&#xff0c;可跳过这一步&#xff09;2. 安装 Pytho…

【软件设计师】

UML 类图中的关系用例图中的关系 关系例子类图用例图顺序图 概念示例通信图活动图泳道图状态图

Java 内部类详解:从基础到实战,掌握嵌套类、匿名类与局部类的使用技巧

作为一名 Java 开发工程师&#xff0c;你一定在实际开发中遇到过这样的场景&#xff1a;想在一个类内部定义另一个逻辑相关的类&#xff1b;需要为某个接口或抽象类提供一个临时实现&#xff08;比如监听器&#xff09;&#xff1b;想利用面向对象特性来组织代码结构&#xff0…

Java设计模式之行为型模式(观察者模式)介绍与说明

一、模式结构 观察者模式包含以下四个角色&#xff1a; Subject&#xff08;主题/被观察者&#xff09; 维护观察者列表&#xff0c;提供注册&#xff08;registerObserver&#xff09;、移除&#xff08;removeObserver&#xff09;观察者的方法&#xff0c;并定义通知所有观察…

实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12

我们将创建两个自定义组件&#xff1a; 1. NumericInputField&#xff1a;一个输入框&#xff0c;当点击时弹出数字键盘。 2. NumericKeyboard&#xff1a;一个可缩放的数字键盘。 设计思路&#xff1a; - NumericInputField 是一个常规的输入框&#xff0c;但点击后会弹出 Num…

Java 深入解析:JVM对象创建与内存机制全景图

第一章&#xff1a;引言 Java 是一种面向对象的编程语言&#xff0c;对象&#xff08;Object&#xff09;是其最基本的组成单位。Java 的“一切皆对象”不仅体现在语法层面&#xff0c;更体现在运行时&#xff0c;几乎所有数据都以对象形式存在于内存中。 然而&#xff0c;很…

Redis 基本操作笔记

1. Redis 简介 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、高性能的键值对存储系统&#xff0c;通常作为数据库、缓存、消息中间件等使用。它支持多种数据类型&#xff0c;包括字符串、哈希、列表、集合、有序集合等。 Redis 特点&#xff1a; 性能&…

Docker从环境配置到应用上云的极简路径

Docker从环境配置到应用上云的极简路径主要包括环境配置、应用容器化、选择云平台及部署应用等步骤&#xff0c;具体如下&#xff1a; - 配置Docker环境&#xff1a; - 安装Docker&#xff1a;根据操作系统下载对应版本的Docker安装包。如在Linux系统中&#xff0c;可使用命令…

Slicer渲染Dicom到nrrd

Slicer渲染Dicom到nrrd 工作中遇到一些处理Dicom数据的需求&#xff0c;个人通过网络上的一些教程 对于原始数据尝试转换到nrrd时&#xff0c;发现部分的窗体数据的渲染方向不一致 进一步发现这些很多定义的方向是跟设备厂家强相关的&#xff0c;不同厂家对于同一段的Dicom参…

QT中设计qss字体样式但是没有用【已解决】

检查一下stylesheet里面是不是有不能被QT读取的CSS语言&#xff0c;可能会跟字体颜色冲突错误示范&#xff1a;/* 错误示例&#xff1a;QSS 中使用 box-shadow */ QPushButton {box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); /* Qt 不支持此属性 */ }删掉就行了如果后续想用阴影…

uniapp获取状态栏高度,胶囊按钮的高度,底部安全区域的高度,自定义导航栏

相关API uni.getSystemInfoSync() uni.getMenuButtonBoundingClientRect() 创建一个utils文件夹&#xff0c;该文件下封装一个systemInfo.js /*** 系统信息工具类* 封装获取系统状态栏、导航栏和安全区域等相关信息的方法*/// 获取系统信息并缓存 const systemInfo uni.get…

jQuery 文本属性值

一、前言在网页开发中&#xff0c;我们经常需要对页面上的文本内容进行操作&#xff0c;例如动态修改段落文字、读取用户输入框的内容、更新按钮文本等。jQuery 提供了简洁而强大的方法来处理这些常见的文本操作需求。本文将带你全面了解 jQuery 中用于操作文本内容的三个核心方…