在Mac上查找文件的目录地址

20

我正在使用Macbook编写Python程序。我想知道如何使用Python的文件函数来访问某些文件。我在谷歌上搜索没有找到答案。

例如,对于Windows操作系统,可以这样做:

f = open(r'C:\text\somefile.txt')

我该如何访问Mac桌面上保存在文件夹中的内容?

4个回答

21

桌面只是用户主目录的一个子目录。由于主目录不是固定的,因此请使用类似 os.path.expanduser 的方式以保持代码的通用性。例如,要读取存储在桌面上的名为 somefile.txt 的文件,请使用以下代码:

import os
f = open(os.path.expanduser("~/Desktop/somefile.txt"))

如果您希望此代码可以在各种操作系统上都能够使用,那么您需要分别找出每个系统中桌面目录的位置。


如果你想让它跨操作系统移植,你还需要更正路径分隔符,例如从 '/' 到 '' 如果你要在 Windows 上运行。请参考我的回答。 - Massimiliano Kraus

12
f = open (r"/Users/USERNAME/Desktop/somedir/somefile.txt")

或者更好的是

import os
f = open (os.path.expanduser("~/Desktop/somedir/somefile.txt"))

因为在bash(Mac Os X上的默认shell)中,~/表示用户的主目录。


因为在*nix系统中,~/代表用户的主目录,这是错误的,它只是一种由流行的shell(如bash)使用的约定。尝试打开~/somefile.txt将会在当前目录中查找名为~的目录。 - Philipp
1
它是不正确的 - open 永远不会展开 ~,也永远不会使用 shell。尝试 open(“〜/ somefile.txt”,“w”)-除非您有一个名为的目录,否则将无法创建文件。 - Philipp
已经更正了,但现在我的答案几乎和你的一模一样 :-( - Federico klez Culloca

2

你正在使用 Mac,所以像 "a/b/c.text" 这样的路径是可以的,但是如果你将来使用 Windows,你就需要将所有的 '/' 改为 '\'。如果你想从一开始就更加便携和跨平台,最好使用 os.path.join 操作符:

import os

desktop = os.path.join(os.path.expanduser("~"), "Desktop")
filePath = os.path.join(desktop, "somefile.txt")

f = open(filePath)

1
如果这仍然是一个问题,我曾经遇到过同样的问题,打电话给了苹果。我得知我创建的文件保存在iCloud上。苹果的工作人员告诉我将该文件保存在本地。我照做了,问题得到解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接