1.os.path(py3.4之前)
1 | from os import path |
'/etc/sysconfig/network'
1 | print(type(p),p,'\n') #p 是一个字符串 |
<class 'str'> /etc/sysconfig/network
True
/etc/sysconfig
network
('/etc/sysconfig', 'network')
/jupyter/draft/network
2. pathlib.Path(py3.4之后)
1 | from pathlib import Path |
1.生成一个路径
1 | print('1:',Path()) #取当前路径 |
1: .
2: a/b/c/d
3: /etc
2. 路径的拼接和分解
/ 拼接:
p / ‘str’ 或者 ‘str’ / p
1 | p = Path('a','b','f/z') |
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 拼接
1 | p3.joinpath('etc','ab',Path('http')) # 等效于 p3.joinpath('etc','ab','http') |
PosixPath('/new_str/a/b/f/z/etc/ab/http')
路径分割: parts方法
1 | print(p4.parts) |
('/', 'new_str', 'a', 'b', 'f', 'z', 'a', 'b', 'f', 'z')
3 获取路径
- 获取字符串路径,str
- 获取bytes路径,bytes
1 | p = Path('/etc') |
/etc
b'/etc'
获取目录:
获取父目录:
parent
parents
1 | p4 = Path('/new_str/a/b/f/z/a/b/f/z') |
/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:
1 | p = Path('/a/b/c/d/g.tar.gz.a') |
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:
1 | p = Path('../tmp/') |
/jupyter/draft
/root
True
False
False
False
False
False
False
/jupyter/tmp
/jupyter/draft/../tmp
True
其他相关3:
1 | p5 = Path('/b/b/c') |
'file:///b/b/c'
4. 创建目录或者文件
1 | from pathlib import Path |
5. 相关操作
路径相关操作:
1 | #设置路径变量 |
True
/jupyter/tmp/a/b/readme.txt
True
3. 文件操作
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
1 | from pathlib import Path |
i am mykernel
i am
路径相关操作2:
遍历并判断文件的类型,如果是目录,判断其是否为空。