Python中路径操作

目录

  • 1. os.path模块
  • 2. pathlib模块
    • 2.1 目录操作
    • 2.2 文件操作
  • 3. shutil模块
    • 3.1 os模块
    • 3.2 shutil模块

1. os.path模块

3.4版本之前使用os.path模块,3.4版本之后建议使用pathlib模块

方法 解释
path.join 拼接一个路径出来
path.exists 判断该路径是否存在
path.split 将路径切割成头和尾的一个元组
path.abspath 返回一个绝对路径
path.dirname 返回‘目录’
path.basename 返回路径的最后一部分
>>> from os import path
>>> p = path.join(‘/usr‘,‘local/httpd/httpd.conf‘)
>>> p
‘/usr/local/httpd/httpd.conf‘
>>> type(p)
<class ‘str‘>
>>> path.dirname(p)
‘/usr/local/httpd‘
>>> path.basename(p)
‘httpd.conf‘
>>> path.split(p)
(‘/usr/local/httpd‘, ‘httpd.conf‘)

>>> p
‘/etc/local/http/httpd.conf‘
>>> while p != path.dirname(p):
...      p = path.dirname(p)
...      print(p,path.basename(p))
...
/etc/local/http http
/etc/local local
/etc etc
/

2. pathlib模块

from pathlib import Path

Path中返回的是一个Path对象,而os.path中返回的是一个字符串。

2.1 目录操作

初始化:

>>> p = Path() # 当前目录
>>> p = Path(‘a‘,‘b‘,‘c/d‘) # 当前目录下的a/b/c/d
>>> p = Path(‘/etc‘) # 根下的etc目录
属性 解释
parts 返回路径中的每一个部分
joinpath 连接多个字符串到Path对象中
parent 目录的逻辑父目录
parents 父目录序列,索引0是直接的父
name 目录中的最后一部分
suffix 目录中的最后一部分的扩展名
stem 目录的最后一个部分,没有后缀
suffixes 返回多个扩展名列表
with_suffix(suffix) 补充扩展名到路径的尾部,返回新的路径,扩展名存在则无效
with_name(name) 替换目录最后一个部分并返回一个新的路径
>>> p = Path(‘/usr/local/httpd/httpd.conf‘)
>>> p.name
‘httpd.conf‘
>>> p.stem
‘httpd‘
>>> p.suffix
‘.conf‘
>>> p.with_name(‘httpd.txt‘)
PosixPath(‘/usr/local/httpd/httpd.txt‘)
属性 解释
cwd() 返回当前工作目录
home() 返回当前家目录
is_dir() 是否是目录
is_file() 是否是普通文件
is_symlink() 是否是软链接
is_socket() 是否是socket文件
is_block_device() 是否是块设备
is_absolute() 是否是绝对路径
resolve() 返回一个新的路径,该路径是当前Path的绝对路径,如果是软连接则被解析
absolute() 获取绝对路径,推荐使用resolve()
exists() 目录或者文件是否存在
rmdir() 删除空目录,没有提供判断目录为空的方法
touch() 创建一个文件
as_uri() 将路径解析成url
mkdir() 创建目录

判断目录:

>>> Path.cwd()
PosixPath(‘/home/yanfa‘)
>>> Path.home()
PosixPath(‘/home/yanfa‘)
>>> p = Path(‘/home/yanfa‘)
>>> p
PosixPath(‘/home/yanfa‘)
>>> p.is_dir()
True
>>> p.is_file()
False
>>> p.is_absolute()
True

创建目录:

>>> p = Path()
>>> p /= ‘a/b/c/d‘
>>> p.exists()
False
>>> p.mkdir() # FileNotFoundError
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/python3.6/lib/python3.6/pathlib.py", line 1248, in mkdir
    self._accessor.mkdir(self, mode)
  File "/usr/local/python3.6/lib/python3.6/pathlib.py", line 387, in wrapped
    return strfunc(str(pathobj), *args)
FileNotFoundError: [Errno 2] No such file or directory: ‘a/b/c/d‘
>>> p.mkdir(parents=True)
>>> p.exists()
True

通配符匹配:

  • glob(pattern) 匹配给定的模式
  • rglob(pattern) 匹配给定的模式,递归目录,返回一个生成器
  • match(pattern) 模式匹配,成功返回True
>>> p = Path()
>>> list(p.glob(‘h*‘))
[PosixPath(‘h‘), PosixPath(‘hello‘)]
>>> list(p.glob(‘**/*.py‘))
[PosixPath(‘pass_py.py‘)]
>>> g = p.rglob(‘*.py‘)
>>> next(g)
PosixPath(‘pass_py.py‘)
>>> next(g)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> p = Path(‘a/b/c/d‘)
>>> p = Path(‘a/b/c/ddd.py‘)
>>> p.match(‘d*.py‘)
True
>>> p.match(‘c/d*.py‘)
True
>>> p.match(‘b/*/d*.py‘)
True

查看文件或者目录属性信息

  • stat() 如同linux里面的stat命令
  • lstst() 同stat(),但是如果是符号链接,就显示链接本身的信息

2.2 文件操作

  • open(mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None如何内建的open,返回一个文件对象。
  • read_bytes() 以‘rb‘读取路径中对应的文件,并返回二进制流。
  • read_text() 以‘rt‘读取路径中对应的文件,并返回文本。
  • write_bytes(date) 以‘wb’方式写入数据到路径对应文件。
  • write_text(data) 以‘wt’方式写入数据到路径对应的文件。
>>> from pathlib import Path
>>> p = Path(‘hello‘)
>>> p.write_text(‘hello python‘)
12
>>> p.read_text()
‘hello python‘
>>> with p.open() as f:
...      print(f.read())
...
hello python

3. shutil模块

3.1 os模块

  • os.name 返回操作系统
  • os.uname() 显示当前操作系统的详细信息
  • sys.platform 返回当前操作系统
  • os.listdir() 返回目录内容的列表
  • os.stat() 如何stat
  • os.chmod() 修改文件的权限
  • os.chown() 改变文件的属主,属组

3.2 shutil模块

shutil模块提供了对文件的高级操作,特别是针对文件的复制和移动。

  • copyfileobj(fsrc, fdst[, length]) 文件对象的复制,复制内容。
  • copyfile(src, dst, *, follow_symlinks=True) 复制文件内容,不含元数据
  • copymode() 仅仅复制权限
  • copystat() 复制元数据,stat包含权限
  • copy() 复制文件内容、权限和部分元数据,不包括创建时间和修改时间
  • rmtree() 递归删除,同rm -rf一样
  • move(src,dst,copy_function=copy2) 递归移动文件,目录到目录路径。

原文地址:https://www.cnblogs.com/dianel/p/10073718.html

时间: 2024-10-30 19:21:54

Python中路径操作的相关文章

python中文件操作的其他方法

前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r',encoding='utf-8')for i in p:print(i)结果如下: hello,everyone白日依山尽,黄河入海流.欲穷千里目,更上一层楼. 1.readline   #读取一行内容 p=open('poems','r',encoding='utf-8') print(p.rea

python中字符串操作大全

前段时间,闲的蛋疼,重新整理了一下python的学习资料,现在把整理的python中字符串操作分享出来,方便自己和大家今后查询 a = 'SUNW ukong 123456' #print(a.capitalize())      #字符串首字母变成大写 #print(a.casefold())        #将字符串中的大写字母全部变成小写字母 #print(a.center(50,'-'))    #将字符串居中显示,总共50个字符,如果字符串的长度不够50个字符,就在字符串两边补齐‘-’

Python中文件操作

一.文件打开操作 1.文件操作步骤: (1)打开文件模式: f =open("db",'a')    #文件追加 f = open("db",'r')    #只读操作(默认模式) f = open("db",'w')    #只写操作,会先清空原文件 f = open("db",'x')    #文件存在,会报错,不存在创建并只写 f = open("db",'rx|a|w')  #以二进制的方式只读或只

python中列表操作

列表 目录: 1:序列操作    ------索引    ------分片    ------步长    ------序列运算    ------成员资格检验    ------内建函数-len-max-min 2:列表操作    ------list函数        ------改变列表    ------删除元素    ------分片赋值 3:列表方法    ------append 在列表末尾添加新的元素    ------count 统计某个元素在列表中出现的次数    ------

python中字典操作大全.md

字典是Python是字典中唯一的键-值类型,是Python中非常重要的数据结构,因其用哈希的方式存储数据,速度非常快.下面列出字典的常用的用途. 创建字典的4种方式: #coding=utf-8 # 如果先能拼出整个字典,则此方法比较方便 Dict1 = {'name':'聚焦学院','age':6} print(Dict1) # {'name': '聚焦学院', 'age': 6} # 如果需要动态地建立字典的一个字段,则此方法比较方便 Dict2 = {} Dict2['name'] = '

python中数据类型操作对比总结

1.创建操作    列表 a = ['data1','data2']   元组 a = ('data1','data2') 字典 a = {'key':'value'} a = dict(name='',age='')    集合 set():可变的. frozenset():不可变. 2.添加操作 列表 a + b:生成一个新列表. extend:接受参数并将每个参数都添加到原有列表.    a.extend([1,2,3]) append:添加任意对象到列表末端.a.append(data)

Python中字符串操作

#Python字符串操作 '''1.复制字符串''' #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sStr1 = 'strcpy2' print sStr2 '''2.连接字符串''' #strcat(sStr1,sStr2) sStr1 = 'strcat' sStr2 = 'append' sStr1 += sStr2 print sStr1 '''3.查找字符''' #strchr(sStr1,sStr2) sStr1 = 'st

python中cursor操作数据库(转)

原文出处:http://doudouclever.blog.163.com/blog/static/175112310201284115340663/ python 操作数据库,要安装一个Python和数据库交互的包MySQL-python-1.2.2.win32-py2.5.exe,然后我们就可以使用MySQLdb这个包进行数据库操作了.     操作步骤如下:    1.建立数据库连接     import MySQLdb     conn=MySQLdb.connect(host="loc

python中List操作

传送门 官方文件地址 list.append(x): 将x加入列表尾部,等价于a[len(a):] = [x] 例: >>> list1=[1,2,3,4] >>> list1.append(5) >>> list1 [1, 2, 3, 4, 5] list.extend(L) 将列表L中的元素加入list中,等价于a[len(a):] = L. 例: >>> list1=[1,2,3,4] >>> L=[5,6,7