Python文件路径名的操作方法

1 文件路径名操作

  对于文件路径名的操作在编程中是必不可少的,比如说,有时候要列举一个路径下的文件,那么首先就要获取一个路径,再就是路径名的一个拼接问题,通过字符串的拼接就可以得到一个路径名。Python中3.4版本前使用os.path模块中的函数来操作路径名;3.4版本开始提供pathlib模块,使用Path对象来对目录和文件进行操作。

2 os.path模块

from os import path
p = path.join('/etc', 'sysconfig', 'network')  # 根据不同的系统,将每个字符串组合成路径形式
print(type(p), p)
print(path.exists(p))  # 判断路径在当前系统中是否存在
print(path.split(p))  # (head, tail)将路径中的最后一个目录或者文件与前面的路径分开
print(path.abspath('.'))  # 返回当前工作路径,'.'代表当前路径
p = path.join('o:/', p, 'test.txt')
print(path.dirname(p))  # 取目录名
print(path.basename(p))  # 取基名
print(path.splitdrive(p))  # 将盘符名和文件路径名分开(对于windows有盘符之分,在Linux中没有盘符)
p1 = path.abspath(__file__)  # 取当前文件所在的路径
print(p1, path.basename(p1))
while p1 != path.dirname(p1):  # 每次取上级目录中的基名
  p1 = path.dirname(p1)
  print(p1, path.basename(p1))

3 pathlib模块

3.1 目录操作

3.1.1 路径拼接和分解

操作符"/"对路径拼接

  “/”操作符可以对两个Path对象进行拼接、字符串和Path对象或者Path对象和字符串进行拼接

parts属性

  parts属性,可以返回路径中的每一个部分

joinpath

  joinpath(*other)连接多个字符串到Path对象中

from pathlib import Path
p = Path()  # 返回当前目录
p = Path('a', 'b', 'c/d')  # 当前目录下的a/b/c/d
p = Path('/etc')  # 返回根下的etc目录
p = Path()
p = p / 'a'
p1 = 'b' / p
p2 = Path('c')
p3 = p2 / p1
print(p3.parts)
p3.joinpath('etc', 'init.d', Path('httpd'))

3.1.2 获取路径

  • str获取路径字符串
  • bytes获取路径字符串的bytes
 p = Path('/etc')
print(str(p), bytes(p))

3.1.3 获取路径中的父目录

  • parent属性返回目录的逻辑父目录
  • parents属性返回父目录序列,索引0是直接的父目录
p = Path('/a/b/c/d')
 print(p.parent.parent) # 返回当前路径的父目录的父目录即/a/b
 for x in p.parents:   # 将当前路径的每一级的父目录序列化
   print(x)

3.1.4 其他属性及方法

属性 含义
name 目录的最后一个部分
stem  目录最后一个部分,不包含后缀
suffix 目录中最后一个部分的扩展名
suffixes 返回多个扩展名列表

和以上四个属性相关的方法:

  •   with_suffix(suffix)补充扩展名到路径尾部,返回新的路径,扩展名存在则修改之
  •   with_name(name)替换目录最后一个部分并返回一个新的路径
p = Path('/viktor/mysqlinstall/mysql.tar.gz')
print(p.name)  # mysql.tar.gz
print(p.suffix)  # .gz
print(p.suffixes)  # ['.tar', '.gz']
print(p.stem)  # mysql.tar
print(p.with_name('mysql-5.tgz'))  # /viktor/mysqlinstall/mysql-5.tgz
p = Path('README')
print(p.with_suffix('.txt'))  # README.txt

和文件类型相关的方法:

方法 功能
is_dir() 是否是目录,目录存在返回True
is_file() 是否是普通文件,文件存在返回True
is_symlink() 是否软链接
is_socket() 是否是socket文件
is_block_device() 是否是块设备
is_char_device() 是否是字符设备
is_absolute() 是否是绝对路径

其他几种方法:

方法 功能
cwd() 返回当前工作目录
home() 返回当前家目录
resolve() 
返回一个新的路径,这个新路径就是当前Path对象的绝对路径。

如果是软链接则直接被解析

absolute() 也可以获取绝对路径,但是推荐使用resolve()
exists() 判断目录或文件是否存在
rmdir() 删除空目录。没有提供判断目录为空的方法

touch(mode=0o666,

exist_ok=True)

创建一个文件
as_url() 将路径返回成URL,例如'file:///etc/passwd'

mkdir(mode=0o777,

parents=False,

exists_ok=False)


parents参数是判断是否创建父目录,True等同于mkdir -p;

False时,父目录不存在,则抛出FileNotFoundError

exist_ok参数,在3.5版本加入。False时,路径存在,

抛出FileExistsError;True时,FileExistsError被忽略

iterdir() 迭代当前目录
p = Path()
p /= 'a/b/c/d'
p.exists()  # True

# 创建目录
p.mkdir()  # 如果p对象的路径存在抛出FileExistsError,否则抛出FileNotFoundError
p.mkdir(parents=True)
p.exists()  # True
p.mkdir(parents=Ture)  # 抛出FileExistsError
p.mkdir(parents=True, exist_ok=True)  # 忽略FileExistsError
p /= 'readme.txt'
p.parent.rmdir()  # 删除readme.txt的父目录,此时真实目录中已经不存在d目录
p.parent.exists()  # False 'a/b/c'
p.mkdir()  # FileNotFoundError
p.mkdir(parent=True)  # 成功

 实现遍历,并判断文件类型,如果是目录是否可以判断其是否为空的代码:

for x in p.parents[len(p.parents)-1].iterdir():
  print(x, end='\t')
  if x.is_dir():
    flag = False
    for _ in x.iterdir():
      flag = True
      break
    print('dir','Not Empty' if flag else 'Empty', sep='\t')
  elif x.is_file():
    print('file')
  else:
    print('other file')

3.2 文件操作

  pathlib中的Path还提供open(mode='r', buffering=-1, encoding=None, errors=None, newline=None)方法打开文件,其使用方法类似内建函数open,返回一个文件对象。Ptyhon3.5后pathlib模块新增加了一些方法,如下所示:

方法 功能
read_bytes() 以‘rb'读取路径对应文件,并返回二进制流

read_text(encoding=None,

errors=None)

以'rt'方式读取路径对应文件,返回文本
Path.write_bytes(data) 以'wb'方式写入数据到路径对应文件

write_text(data, encoding=None,

errors=None)

以'wt'方式写入字符串到路径对应文件
p = Path("my_binary_file")
p.write_bytes(b'Binary file contents')  # 以'wb'形式向p路径对象写入数据
p.read_bytes()

p = Path("my_text_file")
p.write_text('Text file contents')  # 以'wt'形式向p路径对象写入数据
p.read_text()

with p.open() as f:
  print(f.read(5))

总结

以上所述是小编给大家介绍的Python文件路径名的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法

    在python3.6版本中去掉了os.path.walk()函数 os.walk() 函数声明:walk(top,topdown=True,oneerror=None) 1.参数top表示需要遍历的目录树的路径 2.参数农户topdown默认是"True",表示首先返回根目录树下的文件,然后,再遍历目录树的子目录.topdown的值为"False",则表示先遍历目录树的子目录,返回子目录下的文件,最后返回根目录下的文件 3.参数oneerror的默认值是"

  • mac PyCharm添加Python解释器及添加package路径的方法

    一.背景 PyCharm执行Python时,找不到自己安装的package,例如pandas.numpy.scipy.scikit等,在执行时报如下错误ImportError: No module named pandas: Traceback (most recent call last): File "<input>", line 1, in <module> File "/Applications/PyCharm.app/Contents/hel

  • python3下使用cv2.imwrite存储带有中文路径图片的方法

    由于imwrite前使用编码在python3中已经不适用,可用imencode代替,以下代码是从视频中获取第2帧保存在中文文件夹下的实例: cap = cv2.VideoCapture("***.mp4") cap.set(cv2.CAP_PROP_POS_FRAMES, 2) ret, frame=cap.read() cv2.imwrite("我//h.jpg", frame) #该方法不成功 cv2.imencode('.jpg', frame)[1].tof

  • Python 从相对路径下import的方法

    例如我们有如下结构的文件: pkg/ __init__.py libs/ some_lib.py __init__.py components/ code.py __init__.py 如果我们想要在code.py中调用libs/some_lib.py这个module,比如使用相对调用:from ..libs.some_lib import something,仅仅在package中加上__init__.py是不够的.python会返回ValueError: Attempted relative

  • 查看python安装路径及pip安装的包列表及路径

    一.Linux系统 查看Python路径 whereis python 此命令将会列出系统所安装的所有版本的Python的路径效果如下: 使用以下命令可分别查看Python2,Python3的安装路径 whereis python2 whereis python3 查看使用pip安装的软件包 默认Python3 pip list Python2查看pip安装的软件包名称及版本 python2 -m pip list Python3查看pip安装的软件包及版本 python3 -m pip lis

  • 在cmd中查看python的安装路径方法

    我相信一定有很多的人跟我一样,经常忘记Python安装的路径,每当用到的时候,最笨的办法就是在全局电脑里,直接查找Python,这样是肯定能查到的,但是如果你的电脑文件超级多,这将是一个工厂量很大的事情,你要等好久的. 便捷的方法时: 打开我们的cmd命令 输入Python 输入 import sys 输入 print(sys.path) 列表中的第四个将是你的安装路径 python是解释型脚本语言,在执行时,逐句解释执行,不需要进行预编译.但需要有自身的Python解释器. 所以在执行Pyth

  • 浅谈Python2、Python3相对路径、绝对路径导入方法

    os.path.dirname() 获取父目录 os.path.basename() #获取文件名或者文件夹名 python2缺省为相对路径导入,python3缺省为绝对路径导入 python2绝对路径导入 from __future__ import absolute_import python2缺省会搜索上一级目录.上上级目录 解决方案: import platform pver=platform.python_version() pversion= int(pver.split('.')[

  • Python实现调用另一个路径下py文件中的函数方法总结

    本文实例讲述了Python实现调用另一个路径下py文件中的函数方法.分享给大家供大家参考,具体如下: 针对这个问题,网上有很多的解决方式.其实最主要的原因是因为Python无法正确找到你其他文件夹下文件的路径.针对不同的环境和问题有不同的方法,大家可自行测试. 1. 方法一 首先,我先把解决我本人问题的方法记录如下.环境,Python为3.5,pycharm工作区间.主文件(main_preprocess.py)需要运用split_by_date.py中的函数,main_preprocess与s

  • Python文件路径名的操作方法

    1 文件路径名操作 对于文件路径名的操作在编程中是必不可少的,比如说,有时候要列举一个路径下的文件,那么首先就要获取一个路径,再就是路径名的一个拼接问题,通过字符串的拼接就可以得到一个路径名.Python中3.4版本前使用os.path模块中的函数来操作路径名:3.4版本开始提供pathlib模块,使用Path对象来对目录和文件进行操作. 2 os.path模块 from os import path p = path.join('/etc', 'sysconfig', 'network') #

  • python文件和目录操作方法大全(含实例)

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目录名:os.listdir()3.函数用来删除一个文件:os.remove()4.删除多个目录:os.removedirs(r"c:\python")5.检验给出的路径是否是一个文件:os.path.isfile()6.检验给出的路径是否是一个目录:os.path.isdir()7.判断是

  • Python常用模块os.path之文件及路径操作方法

    以下是 os.path 模块的几种常用方法: 方法 说明 os.path.abspath(path) 返回绝对路径 os.path.basename(path) 返回文件名 os.path.commonprefix(list) 返回list(多个路径)中,所有path共有的最长的路径 os.path.dirname(path) 返回文件路径 os.path.exists(path) 如果路径 path 存在,返回 True:如果路径 path 不存在,返回 False. os.path.lexi

  • Python实现将一个大文件按段落分隔为多个小文件的简单操作方法

    本文实例讲述了Python实现将一个大文件按段落分隔为多个小文件的简单操作方法.分享给大家供大家参考,具体如下: 今天帮同学处理一点语料.语料文件有点大,并且是以连续两个换行符作为段落标志,他想把它按段落分隔成多个小文件,即每3个段落组成一个新文件.由于以前没有遇到过类似的操作,在网上找了一些相似的方法,看起来都有点复杂.所以经尝试,自己写了一段代码,完美解决问题. 基本思路是,先读原文件内容,并使用正则表达式,依据\n\n进行切片处理,结果为一个列表,其中每一个列表元素都存放一个切片中的内容;

  • Python文件操作方法详解

    本节内容 1.文件常用操作汇总 2.打开文件 3.操作文件 4.关闭文件 一.文件常用操作汇总 二.打开文件 1.普通打开模式 r,英文:read,只读模式(默认) w,英文:write,只写模式(不可读,不存在则创建新文件,存在则删除内容) a,英文:append,追加模式(不可读,不存在则创建,存在则只追加内容 2.同时读写模式 r+,可读写文件(可读:可写:可追加,不存在文件则报错) w+,可写读文件(可读,可写,创建新文件) a+,可追加和读文件(可读,可追加,不存在则创建) 3.二进制

  • python文件选择对话框的操作方法

    对于python的tkinter库来说,如果需要弹出文件选择框,我们需要引入一下tkinter.filedialog包,让用户直观地先择一个或者多个文件或者保存文件等操作. 常见的文件选择对话框函数有 **打开一个文件:**askopenfilename() **打开一组文件:**askopenfilenames() **保存文件:**asksaveasfilename() 首先是打开一个文件我们将使用的对话函数是askopenfilename() from tkinter import * i

  • python文件路径操作方法总结

    在python中,文件使用十分频繁,本文将向大家介绍python文件路径的操作:得到指定文件路径.得到当前文件名.判断文件路径是否存在.获得指定文件夹下所有文件.获得文件后缀.拼接路径和文件名. 1.得到指定文件路径:os.path.dirname(带路径文件名) 查找处理文件要调用os库,和openpyxl一样,先用import 导入. import os file = r'e:\python\删除最小值.xlsx' pwd = os.path.dirname(file) print(pwd)

  • Python 文件操作方法总结

    目录 文件处理流程 基本操作 打开文件 读文件内容 关闭文件 写文件 文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 r模式,默认模式,文件不存在则报错 w模式,文件不存在则创建,文件存在则覆盖 a模式,文件不存在则创建,文件存在则不会覆盖,写内容会以追加的方式写(写日志文件的时候常用),追加模式是一种特殊的写模式 b(rb,wb,ab)模式:不用加encoding:utf-8 基本操作 打开文件 open(path, flag[, encod

  • Python对PDF文件的常用操作方法详解

    目录 工具 从PDF中提取文本 旋转和叠加页面 加密PDF文件 创建PDF文件 补充 工具 python3.7 Pycharm PDF PyPDF2 reportlab 从PDF中提取文本 PyPDF2没有办法从PDF文档中提取图像.图表或其他媒体,但它可以提取文本,并将其返回为Python字符串. import PyPDF2 reader = PyPDF2.PdfFileReader('test.pdf') page = reader.getPage(0) print(page.extract

  • Linux下安装或升级Python 2.7的操作方法

    1.准备编译环境gcc 2.去官网下载要安装的对应版本的python的源代码 下载地址:https://www.python.org/downloads/source/ 你可以选择你要下载的版本,用wget指令来下载相应的源代码 3.解压下载的代码包 tar -zxvf Python-x.x.x.tgz cd Python-x.x.x 4.配置 1)查找configure文件 find . -name configure cd 搜索结果(一般就在Python文件根目录下) 2)进行配置 ./co

随机推荐