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

mzn*_*rft 29 python

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

我使用以下方法验证了路径

import os
os.getcwd()
os.path.exists(direct)
Run Code Online (Sandbox Code Playgroud)

结果是
真的

x_file=open(direct,'r')  
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

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

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

ale*_*xis 27

看起来你正试图打开一个目录进行阅读,就像它是一个普通文件一样.许多操作系统都不允许你这样做.你无论如何都不需要,因为你想要的东西(从你的描述来看)是

x_file = open(os.path.join(direct, "5_1.txt"), "r")  
Run Code Online (Sandbox Code Playgroud)

或者干脆

x_file = open(direct+"/5_1.txt", "r")
Run Code Online (Sandbox Code Playgroud)


bra*_*rin 11

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

x_file = open('path/to/direct/filename.txt')
Run Code Online (Sandbox Code Playgroud)

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

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


Tho*_*zco 5

您无法使用该函数“打开”目录open。该函数旨在用于打开文件

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

fpath = os.path.join(direct, "5_1.txt")
Run Code Online (Sandbox Code Playgroud)

然后您可以打开该文件:

f = open(fpath)
Run Code Online (Sandbox Code Playgroud)

并阅读其内容:

content = f.read()
Run Code Online (Sandbox Code Playgroud)

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