目录

1 MAC路径与Windows路径问题

2 绝对路径和相对路径概念

3 macOS获取文件绝对路径的快捷键为:


1 MAC路径与Windows路径问题

几乎所有计算机在文件夹名称间使用的都是正斜杠,但微软Windows使用的是却反斜杠

Windows filenames:

C:\some_folder\some_file.txt

Most other operating systems:

/some_folder/some_file.txt

        如果希望你的Python代码能够同时在Windows和Mac/Linux上运行,你需要解决这类平台的特定问题。Python3的新模块pathlib可以使文件操作变得更简单

       (1) 错误的方法:手工构建文件路径

假设现在你有一个数据包,其中包含了你的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会在调用open()函数时识别出任何一种斜杠;

        即便如此,你也不应该依赖它。不是所有的python库都可以在错误的操作系统上使用错误的斜杠,特别是当它们有外部程序或库接口时。

(2)Python对混合斜杠类型的支持仅限Windows,它无法反向工作。也就是说,代码中的反斜杠将在Mac上完全失效:

data_folder = "source_data\\text_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_data\\text_files\\raw_data.txt'

出于上述原因以及其他更多的原因,使用硬编码的路径字符串编写代码会被其他程序员diss的,应该尽量避免。

(3)老方法:Python的os.path模块

        Python的os.path模块提供了很多有用的工具以帮助我们处理这些面向特定操作系统的文件系统问题

        可以用os.path.join()函数来针对当前操作系统正确地使用斜杠来构建路径:

import os.path

data_folder = os.path.join("source_data", "text_files")

file_to_open = os.path.join(data_folder, "raw_data.txt")

f = open(file_to_open)

print(f.read())

        上面的代码在Windows和Mac都能有效工作——但问题就是用起来很让人头大;

        每次调用os.path.join()把路径中的每一部分作为一个独立的字符串参数传进去的办法实在太麻烦了 ;

(4)新方法:Python 3 的 pathlib!

Python 3.4 引入了一个用于处理文件和路径的新标准库——pathlib,而且很好用!

要用pathlib,只要新建一个Path()对象并传入使用正斜杠的路径或文件名,剩下的pathlib都帮你搞定:

data_folder = Path("source_data/text_files/")

file_to_open = data_folder / "raw_data.txt"

f = open(file_to_open)

print(f.read())

        请注意两点:在pathlib中请直接用正斜杠(“/”)。Path对象可以将正斜杠转换成当前操作系统应该使用的正确斜杠。Nice! 

        如果想在某个Path对象后添加内容,只要在代码里使用“/”操作符(也就是除号!)

如果这就是pathlib做的事情,那它可真是Python的一个不错的补充——但它做的其实更多呢~

        比如,我们可以不用调用open()或者close()之类的函数,而直接读文件的内容:

from pathlib import Path

data_folder = Path("source_data/text_files/")

file_to_open = data_folder / "raw_data.txt"

print(file_to_open.read_text())

 注:上上部分的例子是有bug的,因为读取的文件没有关闭。但这里的语句则完全避免了这个问题!

pathlib还把最标准的文件操作变得简单易用:

from pathlib import Path

filename = Path("source_data/text_files/raw_data.txt")

print(filename.name)

# prints "raw_data.txt"

print(filename.suffix)

# prints "txt"

print(filename.stem)

# prints "raw_data"

if not filename.exists():

    print("Oops, file doesn't exist!")

else:

    print("Yay, the file exists!")

上面部分的内容都参考自 :mac系统python读取文件路径_Python小技巧:3个处理文件路径的简单方法_weixin_39781930的博客-CSDN博客

做记录方便自己看,希望大家去看原作者的,更简单易懂!!!

2 绝对路径和相对路径概念

绝对路径就是文件的真正存在的路径,是指从硬盘的根目录(盘符)开始,进行一级级目录指向文件;

相对路径就是以当前文件为基准进行一级级目录指向被引用的资源文件;

以下是常用的表示当前目录和当前目录的父级目录的标识符 :

        …/  表示当前文件所在的目录的上一级目录;

        ./  表示当前文件所在的目录(可以省略);

        / 表示当前站点的根目录(域名映射的硬盘目录);

        "/“左倾斜是正斜杠,”\"右倾斜是反斜杠,可以记为:除号是正斜杠“/”;

Linux 服务器运行程序时,经常会实现路径问题,我基本都是试出来的,经常遇到相对路径报错的问题,然后就再向上写一级路径,有时候就不报错了;

感觉也可以将绝对路径都写上,试试是否报错;

3 macOS获取文件绝对路径的快捷键为:

command + option+c

粘贴到文本文档中既可查看绝对路径:

command + v 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐