pythonfrom os import path
p = path.join('/etc','sysconfig','network') #path.join 拼接。。只能第一个最前位置带/
p
'/etc/sysconfig/network'
pythonprint(type(p),p,'\n') #p 是一个字符串
print(path.exists(p)) #判断文件是否存在
print(path.dirname(p)) #路径的dirname
print(path.basename(p)) #路径的基名
print(path.split(p)) #分割dirname 和 basename
print(path.abspath('network')) #取文件的绝对路径,/jupyter/draft/network 并不存在
<class 'str'> /etc/sysconfig/network True /etc/sysconfig network ('/etc/sysconfig', 'network') /jupyter/draft/network
pythonfrom pathlib import Path
pythonprint('1:',Path()) #取当前路径
print('2:',Path('a','b','c/d')) #字符合成
print('3:',Path('/etc')) #直接写入绝对路径
1: . 2: a/b/c/d 3: /etc
/ 拼接: p / 'str' 或者 'str' / p
pythonp = Path('a','b','f/z')
print(p)
p2 = p / 'new_str'
print(p2)
p3 = '/new_str' / p
print(p3)
p4 = p3 / p
print(p4)
a/b/f/z a/b/f/z/new_str /new_str/a/b/f/z /new_str/a/b/f/z/a/b/f/z
joinpath 拼接
pythonp3.joinpath('etc','ab',Path('http')) # 等效于 p3.joinpath('etc','ab','http')
PosixPath('/new_str/a/b/f/z/etc/ab/http')
路径分割: parts方法
pythonprint(p4.parts)
('/', 'new_str', 'a', 'b', 'f', 'z', 'a', 'b', 'f', 'z')
pythonp = Path('/etc')
print(str(p),'\n',bytes(p))
/etc b'/etc'
获取目录: 获取父目录: parent parents
pythonp4 = Path('/new_str/a/b/f/z/a/b/f/z')
print(p4.parent)
print(p4.parents)
for x in p4.parents:
print(x)
/new_str/a/b/f/z/a/b/f <PosixPath.parents> /new_str/a/b/f/z/a/b/f /new_str/a/b/f/z/a/b /new_str/a/b/f/z/a /new_str/a/b/f/z /new_str/a/b/f /new_str/a/b /new_str/a /new_str /
其他相关1:
pythonp = Path('/a/b/c/d/g.tar.gz.a')
print(p.name) #取basename
print(p.suffix) #取目录最后一部分的扩展名,最后一个小数点部分。包括小数点。
print(p.suffixes) #取从左到右第一个小数点右侧的部分,小数点分割。每部分都带小数点。
print(p.stem) #取basename 排除最后一个小数点部分
print(p.with_name('233.tgz')) #补仓后缀
print(p.with_suffix('.txt')) #补后缀
g.tar.gz.a .a ['.tar', '.gz', '.a'] g.tar.gz /a/b/c/d/233.tgz /a/b/c/d/g.tar.gz.txt
其他相关2:
pythonp = Path('../tmp/')
print(p.cwd()) #获取当前所在目录
print(p.home()) #获取当前用户的家目录
print(p.is_dir()) #判断是否为目录
print(p.is_file())#判断是否为文件
print(p.is_symlink()) #判断是否为软连接
print(p.is_socket()) #判断是否为socket 文件
print(p.is_block_device()) #判断是否为块设备
print(p.is_char_device()) #判断是否为字符设备
print(p.is_absolute()) #判断是否为绝对路径
print(p.resolve()) #返回绝对路径,推荐使用
print(p.absolute()) #返回绝对路径
print(p.exists()) #判断文件或者目录是否存在
/jupyter/draft /root True False False False False False False /jupyter/tmp /jupyter/draft/../tmp True
其他相关3:
pythonp5 = Path('/b/b/c')
p5.as_uri() #返回文件的uri
#说明:不能使用相对路径。。
'file:///b/b/c'
pythonfrom pathlib import Path
p6 = Path('../tmp/123')
p6.mkdir(exist_ok = True)
#mkdir(mode=0o777,parents=False,exist_ok = False)
#parents 是否创建父目录,递归创建
#exist_ok = True 忽略文件存在的异常,默认是不忽略。
p7 = Path('../tmp/123/hello.txt')
p7.touch()
#touch(mode=0o666,exist_ok = True)
路径相关操作:
python#设置路径变量
p1 =Path('/jupyter/tmp/a/b')
p2 =Path('/jupyter/tmp/a/b/3.txt')
# 创建文件
p1.mkdir(parents= True,exist_ok= True)
p2.touch()
# 检测文件是否创建成功
print(p2.exists())
#在a/b下创建新文件
p1 /= 'readme.txt'
p1.touch()
print(p1)
print(p1.exists())
True /jupyter/tmp/a/b/readme.txt True
p.open(mode='r',buffering=-1,encoding=None,errors=None,newline=None) 返回一个文件对象。
p.read_bytes() 以rb读取路径对应的文件,并返回二进制流; p.read_text(encoding=None,errors=None) rt p.write_bytes(data) 以wb 方式写入数据到路径对应的文件 p.write_text(data,encoding=None,errors=None) wt
pythonfrom pathlib import Path
p = Path('../tmp/test.py')
p.write_text('i am mykernel')
print(p.read_text())
with p.open() as f:
print(f.read(5))
i am mykernel i am
路径相关操作2: 遍历并判断文件的类型,如果是目录,判断其是否为空。
本文作者:mykernel
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!