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 中如何处理文件系统路径相关推荐

  1. python中绝对路径的区别,理解Python中的绝对路径和相对路径

    本文介绍了Python中的绝对路劲和相对路径,分享给大家,也给自己留个笔记 1.绝对路径 os.path.abspath("文件名"): 显示的是一个文件的绝对路劲 eg: > ...

  2. python中加入绝对路径_理解Python中的绝对路径和相对路径

    本文介绍了Python中的绝对路劲和相对路径,分享给大家,也给自己留个笔记 1.绝对路径 os.path.abspath("文件名"): 显示的是一个文件的绝对路劲 eg: > ...

  3. 【Python】Python中对目录路径的要求

    Python中使用的目录路径一定不能以"\"结尾,否则会报未知符号错误 另外Python中的编码不支持VisBuild的output窗口,在python开头处定义了UTF-8输出, ...

  4. linux的系统文件位置,剖析Linux系统中的文件系统路径

    1.Linux文件系统是从/开始的: 在Linux操作系统的文件管理中,命令行模式(在控制台或终端下)的文件或目录管理,要涉及路径这一概念,这是Linux命令行操作的最基础的基础.如果我们了解了路径的 ...

  5. Python中关于文件路径的简单操作 [转]

    1: os.listdir(path)  #path为目录 功能相当于在path目录下执行dir命令,返回为list类型    举例:    print os.listdir('..')    输出: ...

  6. python中查看相对路径_python提取相对路径

    原博文 2018-01-30 16:47 − 原理: 用绝对路径,截断根目录的路径,就得到了相对路径. 代码 方法1:字符串替换(用字符串函数)推荐 import os print('======== ...

  7. python中引用上层路径

    2019独角兽企业重金招聘Python工程师标准>>> sys.path.append(os.path.dirname(os.path.dirname(__name__))) #上层 ...

  8. python字典存储省份与城市_在Python中存储字典路径

    根据您的需要,最简单的选项可能是使用元组作为字典键而不是嵌套字典: kidshair['allkids', 'child3', 'hair'] mypath = ('allkids', 'child3 ...

  9. python获取windows路径,Python中的Windows路径

    What is the best way to represent a Windows directory, for example "C:\meshes\as"? I have ...

最新文章

  1. 在ubuntu 16.04.5 LTS上使用Python 2.7生成带logo的二维码实战
  2. iwork11旗舰版 linux,苹果 iWork 11 套件来了,Pages/Numbers/Keynote iOS/macOS 版大升级
  3. 机器学习笔试题精选(三)
  4. 巴特沃斯滤波器应用场合_巴特沃斯数字低通滤波器设计及应用
  5. 牛客网_PAT乙级_1023旧键盘打字(20)【别人代码里用到的hash是啥】
  6. 数据库 日期格式操作
  7. Java单机部署,Nacos docker单机模式部署实现过程详解
  8. Visual Studio生成汇编列表文件(listing file)
  9. Numpy np.random.RandomState()的简单用法
  10. java fx 重绘_如何重绘JAVA FX 2.2中的窗口(舞台)
  11. 「CodePlus 2017 11 月赛」Yazid 的新生舞会(树状数组/线段树)
  12. ASP.NET Core 静态文件 - ASP.NET Core 基础教程 - 简单教程,简单编程
  13. asx根据时间点播放
  14. 你应该会的一道多线程笔试题
  15. 手把手教你如何向 Linux 内核提交代码
  16. springboot项目构建过程中易踩坑点
  17. 吐血整理:手拿几个大厂offer的秘密武器!(免费领取)
  18. processing实现图像碎片化
  19. pygame-KidsCanCode系列jumpy-part17-mask-collide碰撞检测
  20. Linux浏览器无法访问网络解决方案

热门文章

  1. Oracle 小数点特殊处理
  2. 国内物联网平台(8):中移物联网开放平台OneNet
  3. 青岛市人才市场2008年11月份交流会安排
  4. win10java闪退怎么办_Win10应用打不开或闪退怎么办?解决方案在此
  5. 服务器安全篇之一【网络安全】
  6. win7下svchost.exe占据内存过高
  7. 【HoloLens2之Development Console 窗口关闭】
  8. 【随笔】学会拒绝别人,聪明地说不,学会独处
  9. python抓取网站访客手机号_三网运营商大数据实时截流网站访客
  10. 什么是SaaS,SaaS有哪些优缺点?