当前位置: 首页 > news >正文

Python文件路径常用操作

文件路径

在进行数据处理时,经常要用代码去读文件里的数据,那么首先就得知道这个文件的文件路径。文件路径简单地说就是文件的存放位置。文件路径分为两块:文件夹路径和文件名,文件名又分为文件基本名和扩展名。

举例说明:

'/Users/Desktop/data.csv'

其中,

‘/Users/Desktop/‘ 为文件夹路径

‘Data’ 为文件基本名

‘.csv’为文件扩展名。

2 常用操作

2.1  文件路径创建

关键函数:makedirs()——创建新文件夹(目录)

import os
path = "/Users/Desktop/python_code/My_project/get_path/new"
os.makedirs(path)

2.2  文件路径获取

获取文件路径有以下几种场景:1、 获取当前工作路径;2、 获取其它文件路径,其它文件路径又可以是一个也可以是多个。

2.2.1 获取当前工作路径

     关键函数:getcwd()

#获取当前工作目录
import os
path = os.getcwd() #获取当前工作目录文件夹路径
name = 'data' #文件名
expanded_name = '.csv' #文件扩展名
file_path = os.path.join(path,name+expanded_name)#文件路径拼接
print(file_path)

运行结果如下:

/Users/Desktop/python_code/My_project/get_path/data.csv

2.2.2 获取一个文件路径

获取其它文件路径的方式有两种,一种是在代码里面直接输入,另一种是采用弹框的形式,手动选择文件夹或者文件。

① 直接在代码里输入路径

#获取一个文件-输入文件路径
path = '/Users/Desktop/python_code/My_project/get_path' #输入文件夹路径
name = 'data' #文件名
expanded_name = '.csv' #文件扩展名
file_path = os.path.join(path,name+expanded_name) #路径拼接
print(file_path)

运行结果如下:

/Users/Desktop/python_code/My_project/get_path/data.csv

② 弹框选择文件夹或者文件

弹框选择文件夹:

#弹框选择文件夹
import os
import tkinter as tk
from tkinter import filedialog
window = tk.Tk()
window.title('请选择文件夹')
file_path = filedialog.askdirectory() #选择目标文件夹
name = 'data' #文件名
expanded_name = '.csv' #文件扩展名
file_path = os.path.join(file_path,name+expanded_name)
print(file_path)

 弹框选择文件:

#弹框选择目标文件
import tkinter as tk
from tkinter import filedialog
window = tk.Tk()
window.title('请选择目标文件')
file_path = filedialog.askopenfilename() #选择目标文件
print(file_path)

2.2.3 获取多个文件路径

在实际应用中更多的是需要获取多个文件路径,这其中的关键是获取到文件夹里的所有文件,然后再逐一处理。

方法一:

import os
from glob import glob
path = '/Users/Desktop/python_code/My_project/get_path' #文件夹路径,输入或者弹框的形式获取
expanded_name = '.csv' #文件扩展名
file_paths = glob(os.path.join(path,'*' + expanded_name + '*')) #获取所有.csv的文件
file_paths.sort() #按照文件名排序
for i in range(len(file_paths)):print(file_paths[i])

方法二:

import os
path = '/Users/Desktop/python_code/My_project/get_path' #文件夹路径,输入或者弹框的形式获取
expanded_name = '.csv' #文件扩展名
all_file_names = os.listdir(path) #显示所有文件名
file_paths = []
for i in range(len(all_file_names)):if expanded_name in all_file_names[i]:file_paths.append(os.path.join(path,all_file_names[i])) #筛选出目标扩展名的文件
file_paths.sort() #按照文件名排序
for i in range(len(file_paths)):print(file_paths[i])

运行结果如下:

/Users/Desktop/python_code/My_project/get_path/data.csv
/Users/Desktop/python_code/My_project/get_path/data1.csv
/Users/Desktop/python_code/My_project/get_path/data2.csv

 2.3 文件路径处理

常用的文件路径处理有拼接和拆分。

2.3.1 文件路径拼接

关键函数:os.path.join()

import os
path = '/Users/Desktop/python_code/My_project/get_path' #输入文件夹路径
name = 'data' #文件名
expanded_name = '.csv' #文件扩展名
file_path = os.path.join(path,name+expanded_name)
print(file_path)

运行结果如下:

/Users/Desktop/python_code/My_project/get_path/data.csv

2.3.2 文件路径拆分

① 拆分成文件夹路径和文件名

关键函数:os.path.split()

import os
path = '/Users/Desktop/python_code/My_project/get_path' #输入文件夹路径
name = 'data' #文件名
expanded_name = '.csv' #文件扩展名
file_path = os.path.join(path,name+expanded_name)
#分割
result = os.path.split(file_path) #分成文件夹路径和文件名
print(result)

运行结果如下:

('/Users/Desktop/python_code/My_project/get_path', 'data.csv')

② 拆分成文件路径和扩展名

关键函数:os.path.splitext()

import os
path = '/Users/Desktop/python_code/My_project/get_path' #输入文件夹路径
name = 'data' #文件名
expanded_name = '.csv' #文件扩展名
file_path = os.path.join(path,name+expanded_name)
#分割
result = os.path.splitext(file_path) #分成文件路径和文件扩展名
print(result)

运行结果如下:

('/Users/Desktop/python_code/My_project/get_path/data', '.csv')

③ 获取文件名(带扩展名)

关键函数:os.path.basename()

result = os.path.basename(file_path) #获取文件名
print(result)

运行结果:

data.csv

④ 获取文件夹路径

关键函数:os.path.dirname()

result = os.path.dirname(file_path) #获取文件名
print(result)

运行结果:

/Users/Desktop/python_code/My_project/get_path

2.4 文件路径判断

2.4.1 判断路径是否存在

import os
#判断路径是否存在
path = os.getcwd() #获取当前工作目录文件夹路径
name = 'data' #文件名
expanded_name = '.csv' #文件扩展名
file_path = os.path.join(path,name+expanded_name)
judge = os.path.exists(file_path)
print(judge )

运行结果:

True

2.4.2 判断是否为文件夹路径

import os
#判断路径是否存在
path = os.getcwd() #获取当前工作目录文件夹路径
name = 'data' #文件名
expanded_name = '.csv' #文件扩展名
file_path = os.path.join(path,name+expanded_name)
#判断是否为文件夹路径
judge = os.path.isdir(file_path)
print(judge)

运行结果:

False

2.4.3 判断是否为文件路径

import os
#判断路径是否存在
path = os.getcwd() #获取当前工作目录文件夹路径
name = 'data' #文件名
expanded_name = '.csv' #文件扩展名
file_path = os.path.join(path,name+expanded_name)
#判断是否为文件
judge = os.path.isfile(file_path)
print(judge)

运行结果:

True

注:

文件夹路径:/Users/Desktop/python_code/My_project/get_path

文件路径:/Users/Desktop/python_code/My_project/get_path/data.csv

参考链接: 

一文搞懂Python的文件路径操作 - 知乎  

相关文章:

Python文件路径常用操作

1 文件路径 在进行数据处理时,经常要用代码去读文件里的数据,那么首先就得知道这个文件的文件路径。文件路径简单地说就是文件的存放位置。文件路径分为两块:文件夹路径和文件名,文件名又分为文件基本名和扩展名。 举例说明&…...

Redis-Redis 高并发分布式锁

集群分布式场景高并发 1.negix配置代理和路由 高并发场景超卖问题 1.使用原生redis控制超卖时(若是商品,则可以将商品id作为锁对象),会遇到的问题 问题一:若直接使用:将获取锁的对象和设置的超时的时间分开,则不能控…...

【推荐系统】MMOE笔记 20231126

paper阅读 任务差异带来的固有冲突实际上会损害至少某些任务的预测,特别是当模型参数在所有任务之间广泛共享时。(在说ESMM) 共享底层参数可以减少过拟合风险,但是会遇到任务差异引起的优化冲突,因为所有任务都需要在…...

4. 标准 IO 库

4. 标准 IO 库 1. 标准 IO 简介2. FILE 指针3. 标准输入、标准输出和标准错误4. fopen() 和 flose()5. fread() 和 fwrite()6. fseek 定位7. 检查或复位状态7.1 feof()7.2 ferrof()7.3 clearerr() 8. 格式化 IO8.1 格式化输出8. 2 格式化输入 9. IO 缓冲9.1 文件 IO 的内核缓冲…...

SAP Smartform小结

SAP系统做打印单据用的, 感觉很不好用, 特别是要嵌入韩文时必须使用嵌入的word编辑器,运行速度简直不可忍受. 见过一些Adobe interactive form的示例, 看着相当不错, 不过据说需要花money额外买licence, 哪有smartform这种免费东西来得实惠. 一般打印需求,会要求有标题抬头,打…...

KVM虚拟机的NAT网络模式原理及过程展示

NAT的方式及原理 NAT方式是KVM安装后的默认方式。 它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。 default是宿主机安装虚拟机支持模块的时候自动安装的。 其中 virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接…...

亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(一) ​

随着大语言模型效果明显提升,其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型(LLM)知识召回(Knowledge Retrieval)的方式,在私域知识问答方面可以很好的弥补通…...

C# MemoryCache的使用和封装

封装个缓存类,方便下次使用。 using Microsoft.Extensions.Caching.Memory; using System; using System.Collections.Generic;namespace Order.Core.API.Cache {public class GlobalCache C#有偿Q群:927860652{private static readonly MemoryCache …...

【nlp】4.2 nlp中标准数据集(GLUE数据集合中的dev.tsv 、test.tsv 、train.tsv)

nlp中标准数据集 1 GLUE数据集合介绍1.1 数据集合介绍1.2 数据集合路径2 GLUE子数据集的样式及其任务类型2.1 CoLA数据集文件样式2.2 SST-2数据集文件样式2.3 MRPC数据集文件样式2.4 STS-B数据集文件样式2.5 QQP数据集文件样式2.6 (MNLI/SNLI)数据集文件样式2.7 (QNLI/RTE/WNLI…...

Java LinkedList

LinkedList 一个双向链表。 本身是基于链表进行封装的列表, 所以具备了链表的特性: 变更简单, 容量是无限的, 不必像数组提前声明容量等。 同时 LinkedList 支持存储包括 null 在内的所有数据类型。 1 链表 了解 LinkedList 之前, 我们需要先了解一下双向链的特点 单链表, 双…...

【单片机学习笔记】STC8H1K08参考手册学习笔记

STC8H1K08参考手册学习笔记 STC8H系列芯片STC8H1K08开发环境串口烧录 STC8H系列芯片 STC8H 系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗为目标的 8051 单片机,在相同的工作频率下,STC8H 系列单片机比传统的 8051约快12 倍速度…...

RevCol:可逆的柱状神经网络

文章目录 摘要1、简介2、方法2.1、Multi-LeVEl ReVERsible Unit2.2、可逆列架构2.2.1、MACRo设计2.2.2、MicRo 设计2.3、中间监督3、实验部分3.1、图像分类3.2、目标检测3.3、语义分割3.4、与SOTA基础模型的系统级比较3.5、更多分析实验3.5.1、可逆列架构的性能提升3.5.2、可逆…...

HCIA-RS基础-RIP路由协议

前言: RIP路由协议是一种常用的距离矢量路由协议,广泛应用于小规模网络中。本文将详细介绍RIP路由协议的两个版本:RIPv1和RIPv2,并介绍RIP的常用配置命令。通过学习本文,您将能够掌握RIP协议的基本原理、RIPv1和RIPv2的…...

虚拟化逻辑架构: LBR 网桥基础管理

目录 一、理论 1.Linux Bridge 二、实验 1.LBR 网桥管理 三、问题 1.Linux虚拟交换机如何增删 一、理论 1.Linux Bridge Linux Bridge(网桥)是用纯软件实现的虚拟交换机,有着和物理交换机相同的功能,例如二层交换&#…...

【Spring之AOP底层源码解析,持续更新中~~~】

文章目录 一、动态代理1.1、ProxyFactory1.2、Advice的分类1.3、Advisor的理解 二、创建代理对象的方式2.1、ProxyFactoryBean2.2、BeanNameAutoProxyCreator2.3、DefaultAdvisorAutoProxyCreator 三、Spring AOP的理解3.1、AOP中的概念3.2、Advice在Spring AOP中对应API3.3、T…...

C语言:有一篇文章,共三行文字,每行有80个字符。要求分别统计出单词个数、空格数。

分析&#xff1a; #include<stdio.h>&#xff1a;这是一个预处理指令&#xff0c;将stdio.h头文件包含到程序中&#xff0c;以便使用输入输出函数。 int main()&#xff1a;这是程序的主函数&#xff0c;是程序执行的入口点。 char a[3][80];&#xff1a;定义了一个二维…...

【数据结构与算法篇】一文详解数据结构之二叉树

树的介绍及二叉树的C实现 树的概念相关术语树的表示 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一 个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c; 也就是说它是根朝上&#xff0c;而叶朝…...

Windows主机信息收集命令

一.常用信息搜集 whoami # 查看当前用户 net user # 查看所有用户 query user # 查看当前在线用户 ipconfig /all # 查看当前主机的主机名/IP/DNS等信息 route print # 查看路由表信息 netstat -ano # 查看端口开放情况 arp -a # 查看arp解析情况 tasklist /svc # 查看进…...

「go module」一文总结 go mod 入门使用

文章目录 什么是 Go Modules为什么要使用 Modules怎么使用前置条件项目初始化如何安装/管理依赖&#xff1f;依赖安装 go get版本选择方式 替换版本 replace间接依赖 && go mod tidy远程代理 总结 什么是 Go Modules Module 是 Go 的依赖管理工具。 核心概念 Module…...

48. 旋转图像 --力扣 --JAVA

题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 解题思路 顺时针旋转90度 上下翻转 对角线翻转&#xff1b;两次两层循环…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...