获取主目录
提到文件路径问题,不得不先提一下不同操作系统上文件夹之间的分隔符。在 Windows 操作系统上,路径的写法采用的是 \ 反斜杠。而在 macOS 和 Linux 操作系统上,路径的写法采用的是 / 正斜杠。作为一门跨平台的语言, Python 必须处理上述路径表示的不同。好在使用 pathlib 模块的 Path() 函数处理路径问题很简单。下面的例子演示了在 Windows 系统下获取主目录的例子。
>>> from pathlib import Path
>>> Path.home()
WindowsPath('C:/Users/Caizi')
通过调用 Path.home() 可以获得主文件夹的 Path 对象。同样,下面的例子演示了在 Ubuntu 下获取主目录。
>>> from pathlib import Path
>>> Path.home()
PosixPath('/home/caizi')
由此可以看出,在 Python 中路径的写法都采用 / 正斜杠,最后 Python 再由当前运行的系统对路径进行解析。
路径之间的连接
多个文件夹字符串之间可以直接采用 Path() 连接,也可以使用 / 进行连接。下面的例子演示了在 Ubuntu 下连接路径的几种做法。
>>> from pathlib import Path
>>> Path('caizi', 'python', 'day10')
PosixPath('caizi/python/day10')
>>>
>>> listFiles = ['a.txt', 'b.cocx']
>>> for file in listFiles:
... print(Path(r'/caizi/python', file))
...
/caizi/python/a.txt
/caizi/python/b.cocx
>>>
>>> Path('caizi') / 'day10'
PosixPath('caizi/day10')
>>> Path('caizi') / Path('day10', 'path')
PosixPath('caizi/day10/path')
注意,在使用 / 进行路径连接时,前两个值中有一个必须是 Path 对象。
获取当前目录
使用 Path.cwd() 方法可以获取当前工作目录。
>>> from pathlib import Path
>>> Path.cwd()
PosixPath('/home/caizi')
修改当前目录
使用 os.chdir() 方法可以改变当前工作目录。注意使用前要导入 os 模块。
>>> from pathlib import Path
>>> import os
>>> Path.cwd()
PosixPath('/home/caizi')
>>> os.chdir('/etc')
>>> Path.cwd()
PosixPath('/etc')
查看文件夹内容
使用 os.listdir() 方法可以查看当前路径下所有文件。
>>> import os
>>> os.listdir()
['.cache', 'Music', 'Pictures', ...]
创建文件夹
使用 os.makedirs() 方法可以创建新的文件夹,即所谓的目录,采用此方法可以创建子目录。当然也可以使用 Path 对象的 mkdir() 方法,但是此方法只能创建一个目录,不能创建多级子目录。
>>> import os
>>> os.makedirs('/home/caizi/pythondir')
>>> os.listdir()
['.cache', 'pythondir', 'Music', 'Pictures', ...]
判断路径是绝对路径还是相对路径
使用 Path 对象的 is_absolute() 方法,可以判断路径是绝对路径还是相对路径。
>>> from pathlib import Path
>>> Path('/home/caizi').is_absolute()
True
>>> Path('python/day10').is_absolute()
False
获取路径的各部分属性
在不同的操作系统中,路径的属性有所不同。在 Windows 操作系统中,路径 C:\Users\Caizi\python.py 分为以下几个部分:
1. drive:驱动,即 C:。
2. anchor:锚点,也就是文件系统的根目录,即 C:\\。
3. parent:父文件夹,即 C:\\Users\\Caizi。
4. name:文件名,包括文件的名称(stem)以及扩展名(suffix),即 python.py。
在 Linux 操作系统中,除了没有 drive 属性其他属性都与 Windows 操作系统一样。下面的例子演示了如何在 Windows 操作系统下获取路径各部分属性。
>>> from pathlib import Path
>>> path = Path('C:/Users/Caizi/python.py')
>>> path.drive
'C:'
>>> path.anchor
'C:\\'
>>> path.parent
WindowsPath('C:/Users/Caizi')
>>> path.name
'python.py'
>>> path.stem
'python'
>>> path.suffix
'.py'
获取文件大小
使用 os.path 模块的 getsize() 方法可以获取指定文件的大小,以字节为单位返回。
>>> import os
>>> os.path.getsize('C:/Users/Caizi/python.py')
318
检查路径是否有效
在 Python 中, Path 对象有一些检查路径或文件是否存在的方法。
1. exists():当路径存在时,返回 True 。
2. is_dir():当路径存在且有此文件时,返回 True 。
3. is_file():当路径存在其为文件夹时,返回 True 。
>>> from pathlib import Path
>>> path = Path('C:/Users/Caizi')
>>> path.exists()
True
>>> path = Path('C:/Users/Caizi/python.py')
>>> path.is_file()
True
>>> path.is_dir()
False