网站引导动画怎么做的中国建设网官方网站app
网站引导动画怎么做的,中国建设网官方网站app,wordpress图片目录,张家界网站制作原文#xff1a;towardsdatascience.com/path-representation-python-712d37917f9d 与文件系统打交道是那些乍一看似乎微不足道#xff0c;却可以轻易让经验丰富的开发者措手不及的任务之一。我必须承认——我犯过不少错误。我遇到的最常见的反模式之一就是将文件路径在 Pyth…原文towardsdatascience.com/path-representation-python-712d37917f9d与文件系统打交道是那些乍一看似乎微不足道却可以轻易让经验丰富的开发者措手不及的任务之一。我必须承认——我犯过不少错误。我遇到的最常见的反模式之一就是将文件路径在 Python 中表示为字符串。是时候重新思考这种方法了。在今天的文章中我们将探讨为什么使用字符串甚至os模块作为文件路径是灾难的配方。我们将深入研究最佳实践并看看pathlib包如何帮助您编写更干净、更易于维护的代码。为什么使用字符串作为路径是一个糟糕的想法如果您曾经参与过需要在不同操作系统上运行的项目您就知道处理路径的痛苦。不同的系统有不同的路径表示方式。基于 Unix 的系统如 Linux 和 macOS使用正斜杠/而 Windows 使用反斜杠“\”。这是一个小细节但如果您不小心它可能会导致大麻烦。# Unix (e.g. Linux, OSX, etc.)/home/this/is/a/path/to/a/directory# WindowsC:homethisisapathtoadirectory我曾经花费数小时调试一个在 Mac 上运行得完美无缺的脚本但当一位同事在 Windows 上运行时却完全崩溃。问题当然是文件路径。我将路径硬编码为字符串假设它们在任何系统上都会表现相同。这里的问题是代码的可移植性。如果您使用字符串来表示路径您将需要编写条件逻辑来处理不同的操作系统。这不仅会使您的代码变得混乱还引入了不必要的复杂性。# This is a bad practiceimportplatformifplatform.system()Windows:filepathC:homethisisapathtoadirectoryelse:# e.g. Darwin for OSX or Linuxfilepath/home/this/is/a/path/to/a/directory最糟糕的部分这还没有结束。假设您需要连接两个路径。使用普通的字符串连接可能会导致无效的路径尤其是如果其中一个字符串以斜杠结尾。相信我我经历过。path_1/this/is/a/path/path_2/another/path# filepath /this/is/a/path//another/pathfilepathpath_1path_2为什么 OS 模块不是解决方案到这个时候一些读者可能会想“但os模块怎么样”是的使用os.path.join()可以帮助您避免字符串连接的一些陷阱。然而它远非完美的解决方案。importos path_1/this/is/a/path/path_2/another/path# filepath /another/pathfilepathos.path.join(path_1,path_2)虽然这避免了双斜杠的问题但os模块中的路径仍然是字符串。这意味着您仍然需要处理字符串操作的所有限制和复杂性。需要提取父目录想要检查文件是否存在您将需要编写大量额外的代码来完成这些基本任务。在我早期的 Python 生涯中我严重依赖os模块认为它是路径操作的万能解决方案。但随着我的项目复杂性增加我的路径相关错误也越来越多。pathlib 来拯救这就是pathlib的用武之地。它是 Python 标准库的一部分旨在使文件系统路径操作变得轻而易举。pathlib的美妙之处在于它能够将路径表示为对象——纯路径用于计算操作具体路径用于 I/O 操作。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/031697d45cc700633d77da6e04351bc1.pngPathlib 将路径表示为对象 - 来源Python 文档许可协议为 PSF 许可例如让我们考虑以下使用pathlib库简单地构建Path的代码块importpathlib pathpathlib.Path(folder)/subfolder/another_subfolderprint(path)print(type(path))此代码的输出将取决于操作系统在 Unix 系统Linux 或 macOS上# The output when running it on Unix systems (Linux or OSX, for example)folder/subfolder/another_subfolderclasspathlib.PosixPath在 Windows 上# The output when running it on Windows systemsfoldersubfolderanother_subfolderclasspathlib.WindowsPath这种基于您正在运行的操作系统自动处理路径的方式是一个变革。而且好处不止于此。Pathlib 为什么如此强大当涉及到在 Python 中处理文件路径时pathlib提供了一系列功能这些功能不仅超越了仅仅修复字符串和os模块的不足。以下是pathlib作为最佳工具的关键原因。**处理当前工作目录cwd**不再需要担心您的脚本是否会在 Windows 或 Unix 上运行。Pathlib会为您处理。frompathlibimportPathprint(Path.cwd())# On Unix: PosixPath(/Users/gmyrianthous/test)# On Windows: WindowsPath(C:Usersgmyrianthoustest)2. 以编程方式创建新目录frompathlibimportPath Path(new_directory).mkdir()如果新创建的目录已经存在上述代码片段将失败。如果您想忽略这个失败可以在调用mkdir()方法时指定相应的参数Path(new_directory).mkdir(exist_okTrue)3. 检查文件是否存在为了检查特定文件是否在文件系统中存在您首先必须构建一个Path然后使用路径对象上的exists()方法frompathlibimportPathfilePath(my_directory)/data.txtprint(file.exists())4. 列出目录内容要列出目录内容您可以调用iterdir()它将返回一个迭代器frompathlibimportPath filepathPath(folder)/subfoldercontentfilepath.iterdir()如果文件路径预期将包含大量路径和文件那么我建议您逐个遍历迭代器中的文件以避免将所有内容加载到内存中。或者如果您预期内容量相对较小可以直接将迭代器转换为列表frompathlibimportPath filepathPath(folder)/subfoldercontentlist(filepath.iterdir())最后的想法在处理看似简单的任务如文件路径操作时很容易忽略最佳实践。我知道我就是这样。但随着您的项目增长这些“小”事情可以成为主要的痛点。投入时间学习和使用像pathlib这样的工具从长远来看将会有回报让您免受头痛和潜在错误的影响。因此如果您仍然使用字符串在 Python 中表示路径那么是时候进行切换了。您的未来自我以及您的队友会感谢您的。