说说在 Python 中如何处理文件系统路径

发表于:2020-1-21 10:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:deniro_li    来源:CSDN博客

  1 不同操作系统分隔符
  在 Windows 操作系统中,文件路径以倒斜杠作为文件夹之间的分隔符。但在 OSX 和 Linux 上,使用的则是正斜杠作为路径分隔符。如果希望让程序适配所有操作系统,就会用到 os.path.join() 函数。
import os
path = 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

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号