【发布时间】:2012-07-10 06:12:06
【问题描述】:
这是我的第二篇文章,如果我做错了什么,我深表歉意——我会尽量简洁。
我做了一些搜索,大多数转义必须处理嵌入的 JSON 字符串 - 我的问题实际上是打开文件本身。
目前,我正在尝试使我的代码尽可能通用,所以我正在使用:
file = open(os.path.expanduser(r'~/Desktop/Austin/Tweets/10_7_2012_12/09-Tweets.txt'), 'r')
问题是,当解释器看到这段代码时,它会看到文件名中的“/”,我认为它试图进入另一个目录。我通过删除文件名中的“/”并输入来确认这一点:
file = open(os.path.expanduser(r'~/Desktop/Austin/Tweets/10_7_2012_1209-Tweets.txt'), 'r')
它加载得很好。
对所有这些文件这样做的问题是我有数百个文件包含数千条推文,这有点不切实际。
所以我的问题是: 有没有办法在文件 name 中加载带有正斜杠的文件?
我看到了许多使用搜索按钮加载文件的方法,但没有一种方法包括如何处理名称中的正斜杠...我已经尝试过:
file = open(os.path.expanduser('~/Desktop/Austin/Tweets/10_7_2012_12\/09-Tweets.txt'), 'r')
和
file = open(os.path.expanduser('~/Desktop/Austin/Tweets/10_7_2012_12//09-Tweets.txt'), 'r')
一切都无济于事。
如果有人愿意教一个天真的本科生,欢迎解释 Python 如何处理正斜杠。
我在 Leopard 上使用 Mac OSX。我正在运行一个与 Twitter 流 API 通信的网络爬虫;名称中的斜线是用“/”保存它们的结果,以指定日期。
解决方案: 您可以在 Mac OSX 上的文件名中使用正斜杠。 从文件系统的角度来看,/ 实际上是一个冒号,它在 Finder 中被翻译成 /。
Kindall 的解释如下: Carbon 层是必需的,它使用标准的 Mac 文件名分隔符、冒号。自 1984 年以来,Mac 文件名中一直允许使用斜杠。Mac 用户还希望在 GUI 中看到冒号,而不是斜杠作为路径名分隔符(或者至少在 2001 年,当这种行为被制定时)。
【问题讨论】:
-
Python 不“处理”正斜杠。它只是将路径传递给底层操作系统,它会做任何事情。我熟悉的操作系统不会有这个问题,因为你不能创建一个以这样的名称开头的文件。您使用的是什么操作系统以及如何创建此类文件?最简单的解决方案是一开始就不要创建它们。
-
我在 Leopard 上使用 Mac OSX。我正在运行一个与 Twitter 流 API 通信的网络爬虫;名称中的斜线是用“/”保存它们以指定日期的结果。
-
@KalîlÁrmstrøng 您应该将其添加到问题中。您应该用文件名中允许的另一个字符替换名称中的斜杠。
-
完成了,多亏了 Russel,我已经弄明白了。感谢您的帮助。
标签: python path directory escaping