跳到主内容

琅環笔记

有博学强记者,尝为鹅厂从事。游于洞宫,遇一人于途,问逍遥曰:“君读书几何?”遥曰:“吾之未读者,则二十年内书盖有之也,若二十年外,则吾固已尽读之矣。”其人论议超然,遥颇内服,相与欢甚。因共至一处,大石中忽然有门,引遥入数歩,则别是天地,宫室嵯峨。引入一室中,陈书满架,其人曰:“此PL史也。”又至一室,则曰:“OS志也。”毎室各有奇书,惟一室屋宇颇高,封识甚严,有二犬守之。遥问故,答曰:“此皆操作系统、编程语言、算法分析、生发正骨诸秘籍。”指二犬曰:“此龙也。”历观诸室书,皆Windows以前事,多所未闻者,如「BeOS」、「Solaris」、「FreeBSD」、「LISP」亦皆在焉。遥心乐之,欲赁住数十日,其人笑曰:“君痴矣。此岂可赁地耶?”即命小童送出,遥问地名,对曰:“琅嬛福地也。”

Absolute and Relative Path in Python

1. os.path.isabs()

os.path.isabs() 的行为是:如果路径以 / 开头,或者在非类 Unix 平台上,以盘符跟一个 os.sep 开头,就返回 True;否则,就返回 False

这里要注意的是在 Windows 上,是支持两种斜线符号的,一种是Windows的斜线,但需要双写以转义 '\',另一种是类似 Unix 反写 '/'。

看如下代码,在 Windows 下的返回结果

Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug  1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.isabs('c:/abc')
True
>>> os.path.isabs('/abc')
True
>>> os.path.isabs('c:\abc') # 未转义,错误
False
>>> os.path.isabs('c:/abc')
True
>>> os.path.isabs('c:\\abc')
True
>>> os.path.isabs('\\abc')
True
>>> os.path.isabs('abc')
False

所以说,实际上这个方法在 Windows 并不好用,试着查看源代码,但实现并不是 Python 的,似乎有 macpath,posixpath,ntpath,但 ntpath 在 Windows 上返回就是上述值。

2. pathlib.Path().is_absolute() 在 Windows 上更好用

实际上判断是否绝对路径时,应该使用以下代码

import pathlib
pathlib.Path('/abc').is_absolute()

评论

Comments powered by Disqus