xshell从linux拉文件到windows上_Python 3:在Windows,Mac和Linux上处理文件路径的简便方法...

本文探讨了Python编程中Windows与Unix系统文件路径处理的差异,特别强调了MS-DOS历史遗留的反斜杠问题。通过介绍pathlib模块,读者将学会如何优雅地在不同平台上构建和操作文件路径,避免硬编码路径带来的兼容性挑战。
摘要由CSDN通过智能技术生成

编程的一个小麻烦是Microsoft Windows在文件夹名称之间使用反斜杠字符,而几乎所有其他计算机都使用正斜杠:

Windows filenames:C:some_foldersome_file.txtMost other operating systems:/some_folder/some_file.txt

这是1980年代早期的计算机历史事故。MS-DOS的第一个版本使用正斜杠字符指定命令行选项。当Microsoft在MS-DOS 2.0中添加对文件夹的支持时,正斜杠字符已被占用,因此他们使用反斜杠代替。三十五年后,我们仍然坚持这种不相容性。

如果您希望Python代码可以在Windows和Mac / Linux上运行,则需要处理这些特定于平台的问题。幸运的是,Python 3有一个名为pathlib的新模块,可以轻松处理文件。

让我们快速浏览处理文件名路径的不同方法,看看pathlib如何让您的生活更美好!

错误的解决方案:手工构建文件路径

假设您有一个数据文件夹,其中包含您要在Python程序中打开的文件:

25a282e19a1c115533df2ec4996bd78b.png

这是用Python编写代码的错误方法

data_folder = "source_data/text_files/"file_to_open = data_folder + "raw_data.txt"f = open(file_to_open)print(f.read())

请注意,由于我在Mac上,因此我使用Unix式正斜杠硬编码路径。这将使Windows用户生气。

从技术上讲,这段代码仍然可以在Windows上运行,因为Python有一个hack,当你在Windows上调用open()时它会识别出任何一种斜杠。但即便如此,你也不应该依赖它。如果在错误的操作系统上使用错误的斜杠,并非所有Python库都能正常工作 - 特别是如果它们与外部程序或库接口。

Python对混合斜杠类型的支持是一种仅限Windows,它不能反向运行。在代码中使用反斜杠在Mac上完全失败:

data_folder = "source_dataext_files"

file_to_open = data_folder + "raw_data.txt"

f = open(file_to_open)

print(f.read())

# On a Mac, this code will throw an exception:

# FileNotFoundError: [Errno 2] No such file or directory: 'source_dataext_filesaw_data.txt'

出于所有这些原因以及更多原因,使用硬编码路径字符串编写代码会让其他程序员怀疑地看着你。一般来说,你应该尽量避免它。

旧解决方案:Python的os.path模块

Python的os.path模块有许多工具可用于解决这些特定于操作系统的文件系统问题。

使用适合当前操作系统的斜杠构建路径字符串:

import os.pathdata_folder = os.path.join("source_data
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值