如何在python中读取其他目录中的文件

时间:2012-11-04 22:46:03

标签: python

  

我有一个文件,其名称是5_1.txt,在我直接命名的目录中,
   如何使用读取的指令读取该文件。

我使用以下方式验证了路径:

import os
os.getcwd()
os.path.exists(direct)

结果是 真的

x_file=open(direct,'r')  

我收到了这个错误:

Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
x_file=open(direct,'r')
IOError: [Errno 13] Permission denied

我不知道为什么我看不懂文件?有什么建议吗? 谢谢 。

8 个答案:

答案 0 :(得分:24)

您似乎正在尝试打开目录进行阅读,就像它是常规文件一样。许多操作系统都不允许你这样做。你无论如何都不需要,因为你想要的(从你的描述来看)是

x_file = open(os.path.join(direct, "5_1.txt"), "r")  

或只是

x_file = open(direct+"/5_1.txt", "r")

答案 1 :(得分:10)

如果你不在指定目录(即直接),你应该使用(在linux中):

x_file = open('path/to/direct/filename.txt')

注意引号和目录的相对路径。

这可能是您的问题,但您也无权访问该文件。 也许你试图以另一个用户的身份打开它。

答案 2 :(得分:3)

您无法使用open功能“打开”目录。此函数用于打开文件

在这里,您要做的是打开目录中的文件。您必须做的第一件事是计算此文件的路径。 os.path.join函数可以通过连接路径的一部分(目录和文件名)来实现:

fpath = os.path.join(direct, "5_1.txt")

然后您可以打开文件:

f = open(fpath)

阅读其内容:

content = f.read()

此外,我相信在Windows上,在目录上使用open确实会返回PermissionDenied异常,尽管情况并非如此。

答案 3 :(得分:2)

我发现这种方式也很有用。

import tkinter.filedialog
from_filename = tkinter.filedialog.askopenfilename()  

这里会出现一个窗口,您可以浏览直到找到该文件,单击它然后您可以继续使用打开,然后阅读。

from_file = open(from_filename, 'r')
contents = from_file.read()
contents

答案 4 :(得分:1)

对于Windows ,您可以使用带有'\\'的完整路径('/'用于Linux和Mac )作为分隔符,您可以使用os.getcwd获取当前工作目录并提供引用当前工作目录的路径

data_dir = os.getcwd()+'\\child_directory'
file = open(data_dir+'\\filename.txt', 'r')

当我试图完全给出child_diectory的路径时,会导致错误。对于例如在这种情况下:

file = open('child_directory\\filename.txt', 'r')

导致错误。但我认为它必须有效,或者我做得有些错误,但它对我不起作用。约会的方式总是有效。

答案 5 :(得分:0)

正如错误消息所示,您的应用程序无权从目录中读取。当您将目录创建为一个用户并将脚本作为另一个用户运行时,可能就是这种情况。

答案 6 :(得分:0)

对于像我这样的人来看待接受的答案,而不理解为什么它不起作用,你需要在子目录周围添加引号,在绿色检查的例子中,

x_file = open(os.path.join(direct, "5_1.txt"), "r")  

实际应该是

x_file = open(os.path.join('direct', "5_1.txt"), "r")   

答案 7 :(得分:-1)

x_file = open(os.path.join(直接,&#39; 5_1.txt&#39;),&#39; r&#39;)