提到文件路径问题,不得不先提一下不同操作系统上文件夹之间的分隔符。在 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
更多内容请点击
|