前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >求求你,别用 os.path 了

求求你,别用 os.path 了

作者头像
somenzz
发布于 2021-05-18 07:22:20
发布于 2021-05-18 07:22:20
70400
代码可运行
举报
文章被收录于专栏:Python七号Python七号
运行总次数:0
代码可运行

前段时间,在使用新版本的 Django 时,我发现了 settings.py 的第一行代码从

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

变成了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent

于是我就好奇,os 和 pathlib 同样是标准库,为什么 pathlib 得到了 Django 的青睐?学习了一番 pathlib 之后,发现这是一个非常高效便捷的工具,用它来处理文件系统路径相关的操作最合适不过,集成了很多快捷的功能,提升你的编程效率,那是妥妥的。

接下来让一起看一下,为什么 pathlib 更值得我们使用。

pathlib vs os

话不多说,先看下使用对比:比如说

  1. 打印当前的路径:

使用 os:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [13]: import os

In [14]: os.getcwd()
Out[14]: '/Users/aaron'

使用 pathlib:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [15]: from pathlib import Path

In [16]: Path.cwd()
Out[16]: PosixPath('/Users/aaron')
In [17]: print(Path.cwd())
/Users/aaron

使用 print 打印的结果是一样的,但 os.getcwd() 返回的是字符串,而 Path.cwd() 返回的是 PosixPath 类,你还可以对此路径进行后续的操作,会很方便。

  1. 判断路径是否存在:

使用 os:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [18]: os.path.exists("/Users/aaron/tmp")
Out[18]: True

使用 pathlib:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [21]: tmp = Path("/Users/aaron/tmp")

In [22]: tmp.exists()
Out[22]: True

可以看出 pathlib 更易读,更面向对象。

  1. 显示文件夹的内容
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [38]: os.listdir("/Users/aaron/tmp")
Out[38]: ['.DS_Store', '.hypothesis', 'b.txt', 'a.txt', 'c.py', '.ipynb_checkpoints']

In [39]: tmp.iterdir()
Out[39]: <generator object Path.iterdir at 0x7fa3f20d95f0>

In [40]: list(tmp.iterdir())
Out[40]:
[PosixPath('/Users/aaron/tmp/.DS_Store'),
 PosixPath('/Users/aaron/tmp/.hypothesis'),
 PosixPath('/Users/aaron/tmp/b.txt'),
 PosixPath('/Users/aaron/tmp/a.txt'),
 PosixPath('/Users/aaron/tmp/c.py'),
 PosixPath('/Users/aaron/tmp/.ipynb_checkpoints')]

可以看出 Path().iterdir 返回的是一个生成器,这在目录内文件特别多的时候可以大大节省内存,提升效率。

  1. 通配符支持

os 不支持含有通配符的路径,但 pathlib 可以:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [45]: list(Path("/Users/aaron/tmp").glob("*.txt"))
Out[45]: [PosixPath('/Users/aaron/tmp/b.txt'), PosixPath('/Users/aaron/tmp/a.txt')]
  1. 便捷的读写文件操作

这是 pathlib 特有的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f = Path('test_dir/test.txt'))
f.write_text('This is a sentence.')
f.read_text()

也可以使用 with 语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> p = Path('setup.py')
>>> with p.open() as f: f.readline()
...
'#!/usr/bin/env python3\n'
  1. 获取文件的元数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [56]: p = Path("/Users/aaron/tmp/c.py")

In [57]: p.stat()
Out[57]: os.stat_result(st_mode=33188, st_ino=35768389, st_dev=16777221, st_nlink=1, st_uid=501, st_gid=20, st_size=20, st_atime=1620633580, st_mtime=1620633578, st_ctime=1620633578)

In [58]: p.parts
Out[58]: ('/', 'Users', 'aaron', 'tmp', 'c.py')

In [59]: p.parent
Out[59]: PosixPath('/Users/aaron/tmp')

In [60]: p.resolve()
Out[60]: PosixPath('/Users/aaron/tmp/c.py')

In [61]: p.exists()
Out[61]: True

In [62]: p.is_dir()
Out[62]: False

In [63]: p.is_file()
Out[63]: True

In [64]: p.owner()
Out[64]: 'aaron'

In [65]: p.group()
Out[65]: 'staff'

In [66]: p.name
Out[66]: 'c.py'

In [67]: p.suffix
Out[67]: '.py'

In [68]: p.suffixes
Out[68]: ['.py']

In [69]: p.stem
Out[69]: 'c'

  1. 路径的连接 join

相比 os.path.join,使用一个 / 是不是更为直观和便捷?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> p = PurePosixPath('foo')
>>> p / 'bar'
PurePosixPath('foo/bar')
>>> p / PurePosixPath('bar')
PurePosixPath('foo/bar')
>>> 'bar' / p
PurePosixPath('bar/foo')

当然,也可以使用 joinpath 方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> PurePosixPath('/etc').joinpath('passwd')
PurePosixPath('/etc/passwd')
>>> PurePosixPath('/etc').joinpath(PurePosixPath('passwd'))
PurePosixPath('/etc/passwd')
>>> PurePosixPath('/etc').joinpath('init.d', 'apache2')
PurePosixPath('/etc/init.d/apache2')
>>> PureWindowsPath('c:').joinpath('/Program Files')
PureWindowsPath('c:/Program Files')
  1. 路径匹配
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> PurePath('a/b.py').match('*.py')
True
>>> PurePath('/a/b/c.py').match('b/*.py')
True
>>> PurePath('/a/b/c.py').match('a/*.py')
False

pathlib 出现的背景和要解决的问题

pathlib 目的是提供一个简单的类层次结构来处理文件系统的路径,同时提供路径相关的常见操作。那为什么不使用 os 模块或者 os.path 来实现呢?

许多人更喜欢使用 datetime 模块提供的高级对象来处理日期和时间,而不是使用数字时间戳和 time 模块 API。同样的原因,假如使用专用类表示文件系统路径,也会更受欢迎。

换句话说,os.path 是面向过程风格的,而 pathlib 是面向对象风格的。Python 也在一直在慢慢地从复制 C 语言的 API 转变为围绕各种常见功能提供更好,更有用的抽象。

其他方面,使用专用的类处理特定的需求也是很有必要的,例如 Windows 路径不区分大小写。

在这样的背景下,pathlib 在 Python 3.4 版本加入标准库。

pathlib 的优势和劣势分别是什么

pathlib 的优势在于考虑了 Windows 路径的特殊性,同时提供了带 I/O 操作的和不带 I/O 操作的类,使用场景更加明确,API 调用更加易懂。

先看下 pathlib 对类的划分:

图中的箭头表示继承自,比如 Path 继承自 PurePath,PurePath 表示纯路径类,只提供路径常见的操作,但不包括实际 I/O 操作,相对安全;Path 包含 PurePath 的全部功能,包括 I/O 操作。

PurePath 有两个子类,一个是 PureWindowsPath,表示 Windows 下的路径,不区分大小写,另一个是 PurePosixPath,表示其他系统的路径。有了 PureWindowsPath,你可以这样对路径进行比较:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pathlib import PureWindowsPath
>>> PureWindowsPath('a') == PureWindowsPath('A')
True

PurePath 可以在任何操作系统上实例化,也就是说与平台无关,你可以在 unix 系统上使用 PureWindowsPath,也可以在 Windows 系统上使用 PurePosixPath,他们还可以相互比较。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> from pathlib import PurePosixPath, PureWindowsPath, PosixPath  
>>> PurePosixPath('a') == PurePosixPath('b')
False
>>> PurePosixPath('a') < PurePosixPath('b')
True
>>> PurePosixPath('a') == PosixPath('a')
True
>>> PurePosixPath('a') == PureWindowsPath('a')
False

可以看出,同一个类可以相互比较,不同的类比较的结果是 False。

相反,包含 I/O 操作的类 PosixPath 及 WindowsPath 只能在对应的平台实例化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [8]: from pathlib import PosixPath,WindowsPath

In [9]: PosixPath('a')
Out[9]: PosixPath('a')

In [10]: WindowsPath('a')
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-10-cc7a0d86d4ed> in <module>
----> 1 WindowsPath('a')

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/pathlib.py in __new__(cls, *args, **kwargs)
   1038         self = cls._from_parts(args, init=False)
   1039         if not self._flavour.is_supported:
-> 1040             raise NotImplementedError("cannot instantiate %r on your system"
   1041                                       % (cls.__name__,))
   1042         self._init()

NotImplementedError: cannot instantiate 'WindowsPath' on your system

In [11]:

要说劣势,如果有的话,那就是在选择类时会比较困惑,到底用哪一个呢?其实如果你不太确定的话,用 Path 就可以了,这也是它的名称最短的原因,因为更加常用,短点的名称编写的更快。

适用的场景

如果要处理文件系统相关的操作,选 pathlib 就对了。

一些关键点

获取家目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [70]: from pathlib import Path

In [71]: Path.home()
Out[71]: PosixPath('/Users/aaron')

父目录的层级获取:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> p = PureWindowsPath('c:/foo/bar/setup.py')
>>> p.parents[0]
PureWindowsPath('c:/foo/bar')
>>> p.parents[1]
PureWindowsPath('c:/foo')
>>> p.parents[2]
PureWindowsPath('c:/')

获取多个文件后缀:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> PurePosixPath('my/library.tar.gar').suffixes
['.tar', '.gar']
>>> PurePosixPath('my/library.tar.gz').suffixes
['.tar', '.gz']
>>> PurePosixPath('my/library').suffixes
[]


Windows 风格转 Posix:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> p = PureWindowsPath('c:\\windows')
>>> str(p)
'c:\\windows'
>>> p.as_posix()
'c:/windows'

获取文件的 uri:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> p = PurePosixPath('/etc/passwd')
>>> p.as_uri()
'file:///etc/passwd'
>>> p = PureWindowsPath('c:/Windows')
>>> p.as_uri()
'file:///c:/Windows'

判断是否绝对路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> PurePosixPath('/a/b').is_absolute()
True
>>> PurePosixPath('a/b').is_absolute()
False

>>> PureWindowsPath('c:/a/b').is_absolute()
True
>>> PureWindowsPath('/a/b').is_absolute()
False
>>> PureWindowsPath('c:').is_absolute()
False
>>> PureWindowsPath('//some/share').is_absolute()
True

文件名若有变化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_name('setup.py')
PureWindowsPath('c:/Downloads/setup.py')

是不是非常方便?

技术的底层原理和关键实现

pathlib 并不是基于 str 的实现,而是基于 object 设计的,这样就严格地区分了 Path 对象和字符串对象,同时也用到了一点 os 的功能,比如 os.name,os.getcwd 等,这一点大家可以看 pathlib 的源码了解更多。

最后的话

本文分享了 pathlib 的用法,后面要处理路径相关的操作时,你应该第一时间想到 pathlib,不会用没有关系,搜索引擎所搜索 pathlib 就可以看到具体的使用方法。

虽然 pathlib 比 os 库更高级,更方便并且提供了很多便捷的功能,但是我们仍然需要知道如何使用 os 库,因为 os 库是 Python 中功能最强大且最基本的库之一,但是,在需要一些文件系统操作时,强烈建议使用 pathlib。

关注我,学习更多 Python 编程技巧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python七号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
网站建设101:初学者的逐步指南
建立网站是个人和企业建立在线存在的重要一步。无论您是博主、企业家还是小企业主,拥有一个设计良好的网站都会对您的成功产生重大影响。在本博文中,我们将为初学者提供逐步指南,教您如何建立网站。此外,我们还将探讨 .icu 域名扩展及其对您的在线存在的潜在益处。现在,让我们一起深入网站创建的世界吧!
腾讯云DNSPod团队
2023/07/24
3510
网站建设101:初学者的逐步指南
NFT 市场中初创企业的挑战和机遇:建立成功商业模式的策略
近年来,不可替代代币 (NFT) 市场迅速扩张,在各种区块链平台上发生了价值数十亿美元的交易。NFT 是一种特殊的数字资产,可用于确认数字信息的所有权和真实性,包括推文、音乐、电影和视觉艺术。借助这项技术,创作者和收藏家现在有了更多选择。它还为他们提供了新的收入来源和将数字作品商业化的手段。
飞机号dapp119
2023/03/28
5140
NFT 市场中初创企业的挑战和机遇:建立成功商业模式的策略
通过 .icu 域名来释放您的创新想法
.icu 域名,首年注册仅需7元 立即前往 .icu域名注册 立即前往 .icu域名批量注册 仅需 六元 作为千禧一代的企业家,您对创新并不陌生。您可能已经花了无数时间在集思广益,试图想出几位创新的商业点子,但您该如何向世界展示它们呢?在这篇博文中,我们将探讨.icu域名如何帮助您向全球受众表达出您的创新想法。 1 什么是 .icu 域名? .icu 域名在近年来迅速流行起来,因为它为千禧一代的企业家提供了一个向全球观众展示他们的想法和产品的独特机会。 2 千禧一代企业家使用 .icu 域名的好处 使用 .
腾讯云DNSPod团队
2023/04/12
7010
通过 .icu 域名来释放您的创新想法
通过 .icu 域名扩展以建立强大的在线形象
.icu 域名,首年注册仅需7元 立即前往 .icu域名注册 立即前往 .icu域名批量注册 仅需 六元 近年来,使用非传统域名后缀在网上脱颖而出的趋势越来越明显。 最新加入该列表的是 .icu - 代表“我看见你”的扩展名后缀。 此后缀正在迅速普及,许多网站都在使用它来建立强大的在线形象。 artism.icu、wordcounter.icu 和image.icu 等网站都在使用 .icu 域名来发挥自己的优势。 为什么 .icu 域名非常适合品牌打造强大的在线形象  脱颖而出 .icu 域名是一种在众多
腾讯云DNSPod团队
2023/04/02
8580
通过 .icu 域名扩展以建立强大的在线形象
小型企业5种实惠的品牌建立策略
icu 促销又来啦 10月31日之前来DNSPod注册 新注首年仅需5元 除了医学用词,如何赋予.icu更多的含义?中小企业如何利用.icu树立自己的品牌形象?仔细阅读文章,寻找答案。 为什么要为中小企业建立品牌呢? 因为89%的营销人员说品牌知名度是他们的首要目标,而77%的营销领导者说强大的品牌对他们的增长计划至关重要。 但是,最令人印象深刻的统计数据表明,有91%的消费者更喜欢从真实的品牌中购买商品。   对于希望在充满挑战的后疫情市场中建立自己的新公司而言,忠诚度和信誉在决定小型企业
腾讯云DNSPod团队
2020/10/16
8580
EDI会给中小型企业带来哪些帮助?
EDI不仅仅是为大型企业而发明的,中小型企业同样可以使用EDI。大型零售商通常要求其合作伙伴使用EDI,从而使较小的企业也需部署EDI系统。为了响应这些零售商们的要求,中小型企业倾向于采用最实惠的基于云的EDI解决方案。但是,研究表明,当小公司利用EDI作为其竞争优势时,他们已经为快速增长和不断变化的买方需求做出了更好的准备。
知行软件EDI
2021/01/18
6620
EDI会给中小型企业带来哪些帮助?
​.ICU等多个优质后缀,闪促活动来啦~
ICU后缀闪促活动 为您的网站选择完美域名是一个非常关键的决定,因为它是宝贵的营销资产。 您的域名不仅会与您的网站长期保持关联,而且在品牌的成长故事中也将发挥至关重要的作用。为您的网站找到理想的域名得为其寻找一个身份,而这一身份不仅可以展现您品牌的本质,还可以帮助您在人群中脱颖而出。 因此可以肯定地说,您真正需要的是一个带有.icu扩展的域名。 什么是.icu? .icu是一个独特的三字母扩展域名,非常适合希望在互联网上建立令人难忘的品牌标识的企业,品牌,个人和机构。 .icu旨在成为不受任何使用限制的
腾讯云DNSPod团队
2021/04/19
1.7K0
8年内创造出2000亿美元的市值,美国中小型企业SaaS为何这么强?
来源:GGV纪源资本  ID:GGV capital  作者:Jeff Richards ---- 现今,全球1.25亿中小型企业有3000万家在美国,中小型企业占美国企业的99.9%,员工接近6000万人(约美国劳动人口的一半)。毫无疑问,中小型企业是美国经济的核心。 然而过去几十年,他们却一直被科技公司排除在外——大多数风投资金都流向了专注于服务大型企业客户的公司(如财富500强)。 好在这种形势目前已经改变,Square (市值约300亿美元)、Shopify(约170亿美元)、Zendesk
腾讯SaaS加速器
2020/06/09
7880
就你还不知道icu域名代表什么?
众多企业、品牌、个人和企业家都选择了 .icu 域名建立其强大且富有创意的在线形象。 .icu 寓意 “I See You”(我看见你),企业家们可以利用 .icu 域名为他们的网站注册一个令人难忘的名称,并建立其独特、睿智和强大的在线形象。 自成立以来,我们已累积超过一百万个使用 .icu 域名扩展的商业网站,并从中挑选了一些作为示例,快来瞧一瞧! 01996.icu 创建996.icu是为了提高人们对中国开发者们所面临的不良工作时间和恶劣工作条件的认知。 996.icu 来源于中文短语“工作996,
腾讯云DNSPod团队
2022/06/27
3.4K0
就你还不知道icu域名代表什么?
企业该如何使用.icu域名?
‍‍‍ icu在国内,更多用户理解为重病患者治疗室。其实,.icu 作为一个通用的域名扩展后缀,代表“我看见你”(I See You)。 同时,.icu是全球比较畅销的域名扩展后缀之一,很多品牌、企业和个人都选择了 .icu来建立强大的在线形象。 您可以通过以下三种方式来使用.icu域名以建立强大且独特的在线形象。 建立个人品牌 您是不是一个希望将知识传授给他人的自由职业者或所在领域的专家?如果是的话,那么您必须为自己创建一个可信的个人品牌。 建立强大的个人品牌对于在竞争中脱颖而出是至关重要的因素。独特
腾讯云DNSPod团队
2022/12/10
2.2K0
域名注册市场预计将达到10.25亿美元
店铺、网站以及域名是企业的门面,因为这些可以让潜在客户发现并记住你。但随着互联网的发展,保持强大的在线影响力是一项挑战。关注每年的网络世界的趋势和统计数据,尤其是域名行业的最新潮流和统计数据有助于保持你的品牌相关性。
腾讯云DNSPod团队
2023/07/24
2900
域名注册市场预计将达到10.25亿美元
​如何用AI一键建立一个企业官网?都在说没人教你做我教你-优雅草卓伊凡
这里卓伊凡以我们星云智控科技的星云智控系统官网为例,所以首先我得有个很好的简单的介绍,很明显上一篇发过,我们已经有了
卓伊凡
2025/04/24
1690
使用 .icu 域名展示在线作品的好处
.icu 域名,首年注册仅需7元 腾讯云注册通--立即前往 批量注册,仅需6元 立即前往 When it comes to building your online portfolio, choosing the right domain name can be a game-changer. The .icu domain extension has become a popular choice for online portfolios because of its unique features,
腾讯云DNSPod团队
2023/05/11
1.1K0
使用 .icu 域名展示在线作品的好处
.plus域名:让企业更加专业化和个性化
随着互联网的不断发展,域名也越来越多样化。传统的.com、.net、.cn等域名已经被广泛使用,但现在.plus域名正在逐渐崭露头角。那么,.plus域名有哪些优势呢?它适用于哪些企业?使用该域名能够给他们带来哪些好处呢?下面就让我们一起来了解一下。
腾讯云DNSPod团队
2023/07/24
4670
.plus域名:让企业更加专业化和个性化
新能源渠道商管理平台加强渠道监管,渠道商系统驱动企业业绩增长
新能源行业一般在开拓市场前期,以传统渠道方式为基础,将整个市场划分为不同区域并招揽当地渠道商进行维护,企业则负责产品配送,并逐渐启用深度分销的营销渠道模式。但对电商等互联网新型渠道的适应性不足,无法很好的支撑渠道的发展。
数商云市场营销总监
2021/10/18
8130
中小企业SaaS成功破圈的“十个秘密”
来源:腾讯咨询 |翻译:文永生 ---- 前言:最近碰巧在顶尖投资机构BVP官网拜读了BVP合伙人Adam Fisher先生的一篇文章颇受启发,于是尝试把全文翻译过来以飨国内业界朋友,尽管当下对于国内是否存在中小企业这一细分SaaS市场在业界还有很多争议和分歧。文章的翻译和在国内刊发已经获得作者授权,在此对Adam Fisher先生表示感谢。 原标题 :Moving upmarket and the ascent of SMB SaaS 作者:Adam Fisher 来源:www
腾讯SaaS加速器
2021/02/09
6130
2020年将改变Web开发的顶级技术
Web改进包括每个站点工程师应考虑的巨大规则和程序。在过去的某个时候,HTML5,CSS3,JavaScript,PHP和MySQL被用作构建站点或Web应用程序的基本Web改进。无论如何,在最近几年中,随着一些新的Web改进,工具,结构和方言的兴起,现在它已经非常努力地尝试着选择要关注的内容(和要跳过的内容)。
IT大咖说
2020/11/03
1.3K0
2020年将改变Web开发的顶级技术
小型企业数据保护
随着互联网成为一场大规模的革命,几乎每笔交易都是从金融到签署在线合同,保护机密信息变得非常重要。
老人雨何
2018/08/01
1.6K0
AI 赋能,小微企业营销内容破局之道
在当今数字化的商业环境中,营销内容的质量和吸引力对于小微企业的生存与发展至关重要。随着 AI 技术的迅速崛起,小微企业迎来了突破传统营销困境、实现创新发展的新机遇。
内容营销专家刘鑫炜
2024/09/11
2850
连接的力量:.icu域名如何连接人与思想
在当今数字时代,连接变得更加重要。它跨越地理距离,促进协作,并在全球范围内实现思想交流。互联网的出现彻底改变了我们相互连接和分享信息的方式。在众多可用的工具和平台中,.icu域名凭借其强大的连接性成为一个突出的催化剂。在本博文中,我们将探讨连接的重要性以及.icu域名在连接人与思想方面发挥的关键作用。
腾讯云DNSPod团队
2023/07/24
5270
连接的力量:.icu域名如何连接人与思想
推荐阅读
相关推荐
网站建设101:初学者的逐步指南
更多 >
目录
  • pathlib vs os
  • pathlib 出现的背景和要解决的问题
  • pathlib 的优势和劣势分别是什么
  • 适用的场景
  • 一些关键点
  • 技术的底层原理和关键实现
  • 最后的话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档