Python

pathlib基本操作

苦丁树 苦丁树 2023年3月17日 00:00
0 708
import os
import os.path
import pathlib

建立pathlib对象

root = pathlib.Path(r'D:\Temp')
root

WindowsPath('D:/Temp')

建立文件

txt = root.joinpath('readme.txt')
txt

WindowsPath('D:/Temp/readme.txt')

txt = root / 'readme.txt'
txt

WindowsPath('D:/Temp/readme.txt')

判断是否是目录

root.is_dir()

True

判断是否为文件

txt.is_file()

True

py = root / "demo.py"
py.exists()

False

当前目录

pathlib.Path.cwd()

WindowsPath('D:/study/python/notebook/basic')

pathlib.Path()

WindowsPath('.')

当前用户所在的目录

pathlib.Path.home()

WindowsPath('C:/Users/电脑')

py

WindowsPath('D:/Temp/demo.py')

目录分解

py.parts

('D:\\', 'Temp', 'demo.py')

获取文件后缀名

py.suffix

'.py'

获取文件名称,不带后缀名

py.stem

'demo'

获取带后缀名的文件名称

py.name

'demo.py'

文件的上一级目录

py.parent

WindowsPath('D:/Temp')

py.parent.parent

WindowsPath('D:/')

遍历文件的每上一级目录

for p in py.parents:
   print(p)
D:\Temp
D:\

txt

WindowsPath('D:/Temp/readme.txt')

文件的属性,访问时间,创建时间等

txt.stat

<bound method Path.stat of WindowsPath('D:/Temp/readme.txt')>

info = txt.stat()
info

os.stat_result(st_mode=33206, st_ino=34621422135414527, st_dev=1626648111, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1678979882, st_mtime=1678979882, st_ctime=1678979882)

文件大小

info.st_size

0

文件的创建时间

info.st_ctime

1678979882.7585118

import time
time.ctime(info.st_ctime)

'Thu Mar 16 23:18:02 2023'

文件的访问时间

time.ctime(info.st_atime)

'Thu Mar 16 23:18:02 2023'

root

WindowsPath('D:/Temp')

code = root / "code"
code.exists()

False

code.mkdir()

创建文件

py

WindowsPath('D:/Temp/demo.py')

py.touch()
note = root / "note.txt"
note.touch()

写文件

note.write_text("hello note")

10

读取文件内容

note.read_text()

'hello note'

root

WindowsPath('D:/Temp')

遍历当前目录下的所有目录和文件,不包含子目录和子目录的文件

for x in root.iterdir():
   print(x)
D:\Temp\demo.py
D:\Temp\dir
D:\Temp\note.txt

d = root / "dir"
d

WindowsPath('D:/Temp/dir')

d.glob("*.txt")

<generator object Path.glob at 0x000001A92CA053C0>

查找文件

for f in d.glob("*.txt"):
   print(f)
D:\Temp\dir\file1.txt
D:\Temp\dir\file2.txt
D:\Temp\dir\file3.txt
D:\Temp\dir\file4.txt

递归查找文件

for f in d.rglob("*.txt"):
   print(f)
D:\Temp\dir\file1.txt
D:\Temp\dir\file2.txt
D:\Temp\dir\file3.txt
D:\Temp\dir\filea.txt
D:\Temp\dir\fileB.txt
D:\Temp\dir\subdir\filea.txt
D:\Temp\dir\subdir\fileb.txt
D:\Temp\dir\subdir\subfiel1.txt
D:\Temp\dir\subdir\subfiel2.txt

利用正则表达式查找文件

for f in d.rglob("file[a-z].txt"):
   print(f)
D:\Temp\dir\subdir\filea.txt
D:\Temp\dir\subdir\fileb.txt

for f in d.rglob("file[0-9].txt"):
   print(f)
D:\Temp\dir\file1.txt
D:\Temp\dir\file2.txt
D:\Temp\dir\file3.txt
D:\Temp\dir\file4.txt

code

WindowsPath('D:/Temp/code')

删除目录

code.rmdir()

删除文件

txt

WindowsPath('D:/Temp/readme.txt')

txt.unlink()
txt

WindowsPath('D:/Temp/readme.txt')

文件的绝对路径

txt.resolve()

WindowsPath('D:/Temp/readme.txt')

修改文件名和文件扩展名

from pathlib import Path
file1 = Path(r"d:\temp\file_test1.txt")
file1.touch()
fil1_rename = file1.with_name("file_rename.txt")
file_suffix = file1.with_suffix(".ini")
fil1_rename

WindowsPath('d:/temp/file_rename.txt')

file_suffix

WindowsPath('d:/temp/file_test1.ini')

标签: phthon
Weather
广州 天气
28 °C