python路径操作,,路径操作模块3.4版
python路径操作,,路径操作模块3.4版
路径操作模块
3.4版本之前
os.path模块
from os import pathp = path.join("/xpc","sysconfig","network")#构建一个目录,它和存在不存在是两回事。print(type(p),p)print(path.exists(p))print(path.split(p))#(head,tail)print(path.abspath("."))#绝对路径,点代表当前路径p = path.join("f:/",p,"test.txt")print(path.dirname(p))print(path.basename(p))print(path.splitdrive(p))p1 = path.abspath(__file__)print(p1,path.basename(p1))while p1!=path.dirname(p1): p1=path.dirname(p1) print(p1,path.basename(p1))结果为:<class ‘str‘> /xpc\sysconfig\networkFalse(‘/xpc\\sysconfig‘, ‘network‘)C:\Users\Administrator\PycharmProjects\studytset\xpc1f:/xpc\sysconfig\networktest.txt(‘f:‘, ‘/xpc\\sysconfig\\network\\test.txt‘)C:\Users\Administrator\PycharmProjects\studytset\xpc1\test2.py test2.pyC:\Users\Administrator\PycharmProjects\studytset\xpc1 xpc1C:\Users\Administrator\PycharmProjects\studytset studytsetC:\Users\Administrator\PycharmProjects PycharmProjectsC:\Users\Administrator AdministratorC:\Users UsersC:\
3.4版本开始
建议使用pathlib模块,提供path对象来操作。包括目录和文件。
pathlib模块
from pathlib import Path(首字母大写)
目录操作
初始化
from pathlib import Pathp = Path()#当前目录print(p)p = Path("a","b","c/d")#当前目录下的a/b/c/dprint(p)p = Path("/xpc")#跟下的xpc目录print(p)结果为:.a\b\c\d\xpc
from pathlib import Pathp = Path()#当前目录print(p,type(p))#window和Linux不一样print(p.absolute())#绝对路径print(p.joinpath("a","b"))#a/b,它创建了一个新的,所以要用需要创建一个新的对象接着p = Path("a","b","c/d")#当前目录下的a/b/c/dprint(p,p.absolute())p=p/"e"/"f"#不带p会出错。需要带个对象。print(p)p/="g"print(p)p = Path("/xpc")#跟下的xpc目录print(p,p.absolute())结果为:. <class ‘pathlib.WindowsPath‘>C:\Users\Administrator\PycharmProjects\studytset\xpc1a\ba\b\c\d C:\Users\Administrator\PycharmProjects\studytset\xpc1\a\b\c\da\b\c\d\e\fa\b\c\d\e\f\g\xpc C:\xpc
路径拼接和分解
操作符/
path对象/path对象
path对象/字符串 或者 字符串/path对象
分解
parts属性,可以返回路径中的每一个部分
joinpath
joinpath(*other)连接对个字符串到Path对象中。
from pathlib import Pathp = Path()#当前目录p = p/"a"p1 = "b"/pp2 = Path("c")p3 = p2/p1print(p3.parts)p4 = p3.joinpath("etc","init.d",Path("httpd"))print(p4)结果为:(‘c‘, ‘b‘, ‘a‘)c\b\a\etc\init.d\httpd
获取路径
str获取路径字符串
bytes获取路径字符串的bytes
from pathlib import Pathp = Path("/xpc")print(str(p),bytes(p))结果为:\xpc b‘\\xpc‘
父目录
parent目录的逻辑父目录
parents父目录序列,索引0是直接的父。
from pathlib import Pathp = Path("/a/b/c/d")print(p.parent)print(p.parent.parent)for x in p.parents: print(x)结果为:\a\b\c\a\b\a\b\c\a\b\a\
from pathlib import Pathp = Path("/a/b/c/d")print(p.parent.parent)for x in p.parents:#可迭代对象 print(x)结果为:\a\b\a\b\c\a\b\a\
name、stem、suffix、suffixes、with_suffix(suffix)、with_name(name)
name目录的最后一个部分
suffix目录中最后一个部分的扩展名
stem 目录最后一个部分,没有后缀。
suffixes返回多个扩展名列表
with_suffix(suffix)补充扩展名到路径尾部,返回新的路径,扩展名存在则无效。
with_name(name)替换目录最后一个部分并返回一个新的路径。
from pathlib import Pathp = Path("/xpc/mysqlubstkk/mysql.tar.gz")print(p.name)print(p.suffix)print(p.suffixes)print(p.stem)print(p.with_name("mysql-5.tgz"))p = Path("README")print(p.with_suffix(".txt"))结果为:mysql.tar.gz.gz[‘.tar‘, ‘.gz‘]mysql.tar\xpc\mysqlubstkk\mysql-5.tgzREADME.txt
from pathlib import Pathp = Path("/xpc/mysqlubstkk/mysql.tar.gz")print(p.name)print(p.suffix)print(p.suffixes)print(p.stem)print(p.with_name("mysql-5.tgz"))p = Path("README")print(p.with_suffix(".txt"))#变成了新路径结果为:mysql.tar.gz.gz[‘.tar‘, ‘.gz‘]mysql.tar\xpc\mysqlubstkk\mysql-5.tgzREADME.txt
cwd()返回当前工作目录
home()返回当前家目录
is_dir()是否是目录,目录存在返回True。
is_file()是否是普通文件,文件存在返回True。
is_symlink()是否是软链接
is_socket()是否是socket文件。
is_block_device()是否是块设备
is_char_device()是否是字符设备
is_abslolute()是否是绝对路径
resolve()返回一个新的路径,这个新路径就是当前Path对象的绝对路径,如果是软链接则直接被解析。
absolute()也可以获取绝对路径,但是推荐使用resolve()
exists()目录或文件是否存在。
rmdir()删除空目录,没有提供判断目录为空的方法。
touch(mode = 0o666,exist_ok = True)创建一个文件
as_uri()将路径返回成URI,例如“file:///etc/passwd”
mkdir(mode = 0o777,parents = False,exist_ok = False)
parents,是否创建父目录,True等同于mkdir -p;False时,父目录不存在,则抛出FileNotFoundError。
exist_ok参数,在3.5版本加入。False时,路径存在,抛出FileExitsError;True时,FileExistError被忽略。
iterdir()迭代当前目录,返回一个生成器对象。
from pathlib import Pathp = Path()p /="a/b/c/d"print(p.exists())#创建目录#p.mkdir()#FileNotFoundError: [WinError 3] 系统找不到指定的路径。: ‘a\\b\\c\\d‘p.mkdir(parents=True)print(p.exists())p.mkdir(parents=True)p.mkdir(parents=True,exist_ok=True)P /= "readme.txt"p.parent.rmdir()p.parent.exists()p.mkdir()p.mkdir(parents=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 #for循环是否可以使用else子句 print("dir","not empty" if flag else "empty",sep="\t") elif x.is_file(): print("file") else: print("other file")
通配符
glob(pattern)通配给定的模式,返回一个生成器。
rglob(pattern)通配给定的模式,递归目录
返回一个生成器。
from pathlib import Pathp = Path()print(p)print(p.cwd())#当前工作目录print(p.home())print(p.is_dir())#是否是目录print(p.is_file())print(p.is_absolute())print(p.absolute())print(p.resolve())#要求对应的路径要存在print(p.exists())print(list(Path().glob("t*")))print(list(Path().glob("*.py")))print(list(Path().glob("**/*..py")))#相对当前路径,里面所有的。py文件。和rglob等价、print(Path("a/b.py").match("*.py"))print(Path("a/b/c.py").match("*.py"))结果为:.F:\projectC:\Users\xpcTrueFalseFalseF:\projectF:\projectTrue[WindowsPath(‘test.py‘), WindowsPath(‘test1.py‘)][WindowsPath(‘test.py‘), WindowsPath(‘test1.py‘), WindowsPath(‘xyz.py‘)][]TrueTrue
匹配
match(pattern)
模式匹配
from pathlib import Pathprint(Path("a/b.py").match("*.py"))print(Path("a/b/c.py").match("b/*.py"))print(Path("a/b/c.py").match("a/*.py"))print(Path("a/b/c.py").match("a/*/*.py"))print(Path("a/b/c.py").match("a/**/*.py"))print(Path("a/b/c.py").match("**/*.py"))结果为:TrueTrueFalseTrueTrueTrue
start()相当于start命令。
lstat()同stat(),但如果是符号链接,则显示符号链接本身的文件信息。
from pathlib import Pathp = Path("test.py")print(p.stat())#p1 = Path("t")#p1.stat()print(p.lstat())结果为:os.stat_result(st_mode=33206, st_ino=844424930132020, st_dev=870516, st_nlink=1, st_uid=0, st_gid=0, st_size=111, st_atime=1575817742, st_mtime=1576161010, st_ctime=1575817742)os.stat_result(st_mode=33206, st_ino=844424930132020, st_dev=870516, st_nlink=1, st_uid=0, st_gid=0, st_size=111, st_atime=1575817742, st_mtime=1576161010, st_ctime=1575817742)
文件操作
以“wt”方式写入字符串大路径对应文件。
上面的方法使用应该注意,建议使用内建open方法。
from pathlib import Pathp = Path("my_binary_file")p.write_bytes(b"binary file conents")print(p.read_bytes())P = Path("my_test_file")p.write_text("xpc")print(p.read_text())p = Path("f:/test.py")p.write_text("hello python")print(p.read_text())with p.open() as f: print(f.read(5))结果为:b‘binary file conents‘xpchello pythonhello
python路径操作
相关内容
- Python可视化Matplotlib-K线图,,引入类库import
- python安装h5py,,sudo pip i
- Win10(PowerShell)下Python命令行tab自动补全,,用Python,直接
- python 通过句柄获取窗口内容,,-- enoding
- Python 波浪线与补码,,分享一下我老师大神的
- Python制作有道翻译小工具,有道翻译,该工具主要是利用
- python学习之路(四) ---函数,,一.函数的作用
- sip鉴权认证算法详解及python加密,pythonsip,1.认证和加密
- python中的not的意思,python中的not,python中的no
- 编译安装python3.8共存自带python2.7,python3.8,从官网下载最
评论关闭