当前位置: 首页 > 面试题库 >

Python为os.listdir返回的文件名提供FileNotFoundError

拓拔迪
2023-03-14
问题内容

我试图遍历这样的目录中的文件:

import os

path = r'E:/somedir'

for filename in os.listdir(path):
    f = open(filename, 'r')
    ... # process the file

但是,FileNotFoundError即使文件存在,Python仍会抛出:

Traceback (most recent call last):
  File "E:/ADMTM/TestT.py", line 6, in <module>
    f = open(filename, 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'foo.txt'

那么,这里出了什么问题?


问题答案:

这是因为os.listdir不返回文件的完整路径,仅返回文件名部分;也就是说'foo.txt',当打开时会需要,'E:/somedir/foo.txt'因为该文件在当前目录中不存在。

用于os.path.join在目录前添加文件名:

path = r'E:/somedir'

for filename in os.listdir(path):
    with open(os.path.join(path, filename)) as f:
        ... # process the file

(此外,您没有关闭文件;该with块将自动处理该文件)。



 类似资料:
  • 问题内容: 我正在使用selenium脚本,在其中尝试下载Excel文件并为其指定特定名称。这是我的代码: 无论如何,我可以给下载的文件指定一个特定的名称吗? 码: 问题答案: 您不能通过硒指定下载文件的名称。但是,您可以下载文件,在下载的文件夹中找到最新文件,然后根据需要重命名。 注意:从Google搜索中借用的方法可能有错误。但是你明白了。

  • 问题内容: 我有以下控制器… 我的servlet上下文使用以下值设置… 现在,如果我转到那,我得到的视图就是userManagement.jsp,这正是我想要的… 但是,如果我转到404错误。 我看不到的是为什么会发生这种情况,因为我将requestMapping设置为与上面完全相同,并且在/ WEB-INF / views中我有一个createUser.jsp和userManagement.js

  • 问题内容: 我试图做一些简单的命令来向文件中写入hello world: 这将返回一个空文件。 问题答案: Python每次之后都不会刷新文件。您要么需要使用以下命令手动刷新它: 或自己关闭它: 在实际程序中使用文件时,建议使用: 这样可以确保即使抛出异常也将关闭文件。但是,如果您想在REPL中工作,则可能要坚持手动关闭它,因为它会在尝试执行之前尝试读取全部内容。

  • 我正在使用一个selenium脚本,试图下载一个Excel文件并给它一个特定的名称。这是我的代码: 我可以给正在下载的文件一个特定的名称吗? 代码:

  • 问题内容: 我希望站点上的用户能够下载路径被遮盖的文件,以便不能直接下载它们。 例如,我希望URL如下所示: http://example.com/download/?f=somefile.txt 在服务器上,我知道所有可下载文件都位于文件夹中。 有没有一种方法可以使Django提供该文件供下载,而不是尝试查找URL和查看以显示它? 问题答案: 你可以将的解决方案与模块结合使用:生成文件(或文件本

  • 当从OpenCV节点运行示例时,我收到此错误