3.4之前的版本
from os import path
p=path.join('/etc','sysconfig','network')
print(p)
print(path.exists(p))
print(path.split(p))
print(path.abspath('.'))
p=path.join('o:/',p,'test.txt')
print(path.dirname(p))
print(path.basename(p)) test.txt 后边文件部分
os.listdir("./")
3.4之后的版本
from pathlib import Path
p=Path()
print(type(p))
print(p.absolute())
print(p.joinpath('a', 'b'))
p=p.joinpath('a', 'b')
print(p.absolute())
p /='c' / 'd'
p=p / 'c' / 'd'
print(p)
p /='e'
print(p)
p1=Path('etc')
print(p1)
print(p1.absolute())
p2=Path(' ')
p2=p2 / 'etc' /'syscong'
print(p2)
目录操作
p=path()
p3=Path('a','b','c/d')
print(p3)
p4=Path('/a/','/b','c')
print(p4)
操作符 /
Path对象 / path对象
分解
parts 属性 可以返回路径中每一部分
print(p4.parts)
p2=Path('/etc')
print(str(p2),bytes(p2))
print(p2.parent)
print(p2.parent.parent)
print(list(p2.parents))
p2 /='a/b/c/d'
print(p2)
print(list(p2.parents))
print(list(p2.parents))[0]
print(next(iter(p2.parents)))
print(list(p2.absolute().parents))
name 目录的最后一部分
stem 目录最后一部分 没有后缀
suffix 目录中最后一部分扩展名
suffixes 返回多个扩展名列表
with_suffix(suffix) 补充扩展名到路径尾部 返回新的路径 扩展名存在则无效
with_name(name) 替换目录最后一个部分并返回一个新的路径
p5=Path('/etc/sysconfig/network/xx.ifg')
print(p5)
print(p5.name)
print(p5.stem)
print(p5.suffix)
print(p5.suffixes)
print(p5.with_suffix('.gz'))
print(p5.with_name('test'))
print(p5.parent)
print(p5.parent / 'test')
print(p5.absolute().joinpath() / 'rrr')
for x in p.parents:
print(x)
cwd() 返回当前工作目录
home() 返回当前家目录
is_dir() 是否是目录
is_file() 是否是普通文件
is_symlink() 是否是软连接
is_socket() 是否是socket文件
is_block_device() 是否是块设备
is_char_device() 是否是字符设备
is_absolute() 是否是绝对路径
print(p5.cwd())
print(p5.home())
print(p5.is_dir())
print(p5)
print(p5.is_file())
resolve() 返回一个新路径 这个新路径就是当前Path 对象的绝对路径 如果是软连接则直接被解析
absolute() 也可以获取绝对路径 但是推荐使用resolve()
exists() 目录或文件是否存在
rmdir() 删除空目录 没有提供判断目录是否为空的方法
torch(mode=0o666,exist_ok=True) 创建一个文件
as_uri()将路径返回成URL 例如 file:///etc/passwd
mkdir(mode=0o777,parents=False,exist_ok=False)
print(p5.exists())
p6=Path('/tmp/mysql.tar.gz')
p6.touch()
print(p6.resolve())
print(p6.as_uri())
p7=Path('/tmp/tt.tar')
p7.mkdir()
parents 是否创建父目录 True等同于mkdir -p False时父目录不存在则抛出异常
exist_ok 参数 在3.5版本加入 false时 路径存在 再创建抛出FileExistsError True时 FileExistsError被忽略
iterdir()
print(Path().iterdir())
for x in Path().iterdir():
if x.is_dir():
print(x)
迭代文件
for x in p.parents[len(p.parents)-1].iterdir():
print(x,end='\t')
if x.is_dir():
flag=True
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')
print(p6.parents[len(p6.parents)-1])
print(p6.parents)
通配符
* 任意
** 任意级
glob() 通配给定的模式
rglob() 通配给定的模式 递归目录 reko递归
list(p6.glop('test*')) 返回当前目录对象下的test开头的文件
list(p6.glop(**/*.py)) 递归所有目录 等同rglob
list(p.rglop('*.py')) 递归所有目录 找py文件
print(list(Path().glob('t')))
yanbao_texts = []
for yanbao_file_path in Path(YANBAO_DIR_PATH).glob('*.txt'):
with open(yanbao_file_path) as f:
yanbao_texts.append(f.read())
匹配
match(pattern)
模式匹配 成功返回True
print(Path('a/b.py').match('*.py'))
print(Path('a/b.py').match('a/*.py'))
print(Path('a/b.py').match('c/*.py')) False
文件操作
p4.touch()
p4.open()
os模块
import os
print(os.name)
print(os.listdir('/tmp'))
os.stat()
os.chmod()
os.chown(path,uid,gid)
shutil
copy复制
copyfileobj(fsrc,fdist[])
import shutil
with open('/tmp/a','r+') as f1:
f1.write('sdf')
f1.flush()
with open('/tmp/b','w+') as f2:
shutil.copyfileobj(f1,f2)
copyfile()
with open() as f1:
with open() as f2:
shutil.copyfile()
csv文件
json半结构化 html 按照一定的规格
import json
d={"name":"TOm","age":20,"interest":["music","movie"]}
j=json.dumps(d)
print(j)
d1=json.loads(j)
print(d1)
def read_json(file_path):
with open(file_path, mode='r', encoding='utf8') as f:
return json.load(f)