说说在 Python 中如何处理文件系统路径
1 不同操作系统分隔符
在 Windows 操作系统中,文件路径以倒斜杠作为文件夹之间的分隔符。但在 OSX 和 Linux 上,使用的则是正斜杠作为路径分隔符。如果希望让程序适配所有操作系统,就会用到 os.path.join() 函数。
import ospath = os.path.join('usr', 'local', 'sbin')
print(path)
运行结果:
usr\local\sbin
如果在 OS X 或 Linux 上调用这个函数, 就会返回 ‘usr/local/sbin’。
2 当前运行环境所在路径与切换路径
利用 os.getcwd() 函数,可以获取当前当前运行环境所在路径。而使用 os.chdir() 可以改变这个路径。
current_path=os.getcwd()
print(current_path)
#切换当前所在路径
os.chdir('C:\Program Files')
print(os.getcwd())
运行结果:
F:\python_projects\xxx\excel\file
C:\Program Files
注意: 如果要更改的运行环境所在路径不存在,就会抛出错误:
os.chdir('C:\\not_exist')
运行结果:
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: ‘C:\not_exist’
这时,可以使用 os.makedirs() 创建所有必要的中间文件夹,确保路径存在:
not_exist_path = 'C:\\not_exist\\1'
try:os.chdir(not_exist_path)
except FileNotFoundError:os.makedirs(not_exist_path)os.chdir(not_exist_path)print(os.getcwd())
运行结果:
C:\not_exist\1
3 路径函数
3.1 os.path 模块路径函数
函数 | 说明 |
---|---|
os.path.abspath(path) | 返回 path 的绝对路径。适用于将相对路径转换为绝对路径。 |
os.path.isabs(path) | 如果 path 是绝对路径,就返回 True;否则返回 False。 |
os.path.relpath(path, start) | 返回从 start 路径到 path 的相对路径。如果没有提供 start 参数,则使用当前运行目录作为开始路径。 |
os.path.basename(path) | 返回 path 参数中最后一个斜杠之后的所有内容。 |
os.path.dirname(path) | 返回 path 参数中最后一个斜杠之前的所有内容。 |
os.path.split(path) | 返回路径中的目录与名称元组。 |
os.path.exists(path) | 是否存在 path 路径。 |
os.path.isfile(path) | path 路径存在,并且是文件。 |
os.path.isdir(path) | path 路径存在,并且是文件夹。 |
3.2 相对路径与绝对路径
os.chdir('C:\\Program Files')
print(os.path.abspath('.'))
print(os.path.abspath('.\\Common Files'))
print(os.path.isabs('.'))
print(os.path.isabs('C:\\Program Files'))
运行结果:
C:\Program Files
C:\Program Files\Common Files
False
True
因为首先使用 os.chdir() 把当前路径切换到了 C:\\Program Files
,所以调用 os.path.abspath() 时, 当前运行所在目录是 C:\\Program Files
, 所以“ 点” 的相对路径表示法所对应的绝对路径就是 C:\\Program Files
。
3.3 返回从 start 路径到 path 的相对路径
print(os.path.relpath('C:\\Program Files','C:\\'))
print(os.path.relpath('C:\\Program Files','C:\\windows\\addins\\'))
运行结果:
Program Files
…\Program Files
3.4 获取路径中的目录与名称
path='C:\Program Files\Common Files\Adobe\CEP\extensions\LogiOptionsAdobe\index.html'
print(os.path.basename(path))
print(os.path.dirname(path))
print(os.path.split(path))
运行结果:
index.html
C:\Program Files\Common Files\Adobe\CEP\extensions\LogiOptionsAdobe
(‘C:\Program Files\Common Files\Adobe\CEP\extensions\LogiOptionsAdobe’, ‘index.html’)
注意: 如果需要返回路径中的每一部分的名称列表,os.path.split(path) 就不适用啦。我们可以使用 split() 方法来实现:
print(path.split(os.path.sep))
运行结果:
[‘C:’, ‘Program Files’, ‘Common Files’, ‘Adobe’, ‘CEP’, ‘extensions’, ‘LogiOptionsAdobe’, ‘index.html’]
3.5 路径验证
print(os.path.exists('C:\\Program Files'))
print(os.path.isdir('C:\\Program Files'))
print(os.path.isfile('C:\\Program Files'))
print(os.path.isfile('C:\Program Files\Common Files\Adobe\CEP\extensions\LogiOptionsAdobe\index.html'))
运行结果:
True
True
False
True
说说在 Python 中如何处理文件系统路径相关推荐
- python中绝对路径的区别,理解Python中的绝对路径和相对路径
本文介绍了Python中的绝对路劲和相对路径,分享给大家,也给自己留个笔记 1.绝对路径 os.path.abspath("文件名"): 显示的是一个文件的绝对路劲 eg: > ...
- python中加入绝对路径_理解Python中的绝对路径和相对路径
本文介绍了Python中的绝对路劲和相对路径,分享给大家,也给自己留个笔记 1.绝对路径 os.path.abspath("文件名"): 显示的是一个文件的绝对路劲 eg: > ...
- 【Python】Python中对目录路径的要求
Python中使用的目录路径一定不能以"\"结尾,否则会报未知符号错误 另外Python中的编码不支持VisBuild的output窗口,在python开头处定义了UTF-8输出, ...
- linux的系统文件位置,剖析Linux系统中的文件系统路径
1.Linux文件系统是从/开始的: 在Linux操作系统的文件管理中,命令行模式(在控制台或终端下)的文件或目录管理,要涉及路径这一概念,这是Linux命令行操作的最基础的基础.如果我们了解了路径的 ...
- Python中关于文件路径的简单操作 [转]
1: os.listdir(path) #path为目录 功能相当于在path目录下执行dir命令,返回为list类型 举例: print os.listdir('..') 输出: ...
- python中查看相对路径_python提取相对路径
原博文 2018-01-30 16:47 − 原理: 用绝对路径,截断根目录的路径,就得到了相对路径. 代码 方法1:字符串替换(用字符串函数)推荐 import os print('======== ...
- python中引用上层路径
2019独角兽企业重金招聘Python工程师标准>>> sys.path.append(os.path.dirname(os.path.dirname(__name__))) #上层 ...
- python字典存储省份与城市_在Python中存储字典路径
根据您的需要,最简单的选项可能是使用元组作为字典键而不是嵌套字典: kidshair['allkids', 'child3', 'hair'] mypath = ('allkids', 'child3 ...
- python获取windows路径,Python中的Windows路径
What is the best way to represent a Windows directory, for example "C:\meshes\as"? I have ...
最新文章
- 在ubuntu 16.04.5 LTS上使用Python 2.7生成带logo的二维码实战
- iwork11旗舰版 linux,苹果 iWork 11 套件来了,Pages/Numbers/Keynote iOS/macOS 版大升级
- 机器学习笔试题精选(三)
- 巴特沃斯滤波器应用场合_巴特沃斯数字低通滤波器设计及应用
- 牛客网_PAT乙级_1023旧键盘打字(20)【别人代码里用到的hash是啥】
- 数据库 日期格式操作
- Java单机部署,Nacos docker单机模式部署实现过程详解
- Visual Studio生成汇编列表文件(listing file)
- Numpy np.random.RandomState()的简单用法
- java fx 重绘_如何重绘JAVA FX 2.2中的窗口(舞台)
- 「CodePlus 2017 11 月赛」Yazid 的新生舞会(树状数组/线段树)
- ASP.NET Core 静态文件 - ASP.NET Core 基础教程 - 简单教程,简单编程
- asx根据时间点播放
- 你应该会的一道多线程笔试题
- 手把手教你如何向 Linux 内核提交代码
- springboot项目构建过程中易踩坑点
- 吐血整理:手拿几个大厂offer的秘密武器!(免费领取)
- processing实现图像碎片化
- pygame-KidsCanCode系列jumpy-part17-mask-collide碰撞检测
- Linux浏览器无法访问网络解决方案