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

我是否需要将另一个目录中文件的完整路径传递给open()?

胡意致
2023-03-14
问题内容

我有一个包含十个文件的文件夹,我想循环浏览。当我打印出文件名时,我的代码可以正常工作:

    import os
    indir = '/home/des/test'
    for root, dirs, filenames in os.walk(indir):
        for f in filenames:
            print(f)

哪些打印:

1
2
3
4
5
6
7
8
9
10

但是,如果我尝试在循环中打开文件,则会出现IO错误:

    import os
    indir = '/home/des/test'
    for root, dirs, filenames in os.walk(indir):
        for f in filenames:
            log = open(f, 'r')

    Traceback (most recent call last):
    File "/home/des/my_python_progs/loop_over_dir.py", line 6, in <module>
    log = open(f, 'r')
    IOError: [Errno 2] No such file or directory: '1'
    >>> 

我是否需要甚至在循环内将文件的完整路径传递给open()它们?


问题答案:

是的,您需要完整的路径。

log = open(os.path.join(root, f), 'r')

是快速修复。正如注释所指出的那样,它会os.walk下降到子目录中,因此您确实需要使用当前目录的根目录,而不是indir用作路径联接的基础。



 类似资料:
  • 问题内容: 我在搞弄JAX- RS,制作了一个应用程序,该应用程序调用产生JSON的REST服务。我尝试了Jersey,一切都很好,但是由于我的应用程序需要使用JDK5进行构建,因此我不得不切换到RESTEasy。我将web.xml更改为以下内容: 因此,我希望每个以/ rest开头的URL都将由RESTEasy处理。我的服务如下: 使用Jersey可以正常工作,http:// localhost

  • 问题内容: 我有一个目录树,里面有很多文件。我想将所有这些文件复制到一个新目录中,但所有文件都位于该文件夹的底部。 所以我有这样的事情: 我想要这样的东西: 我很确定有一个bashcommand,但是我还没有找到它。你有什么想法? CS 问题答案: 您正在寻找扁平化目录的方法 所有文件均采用不区分大小写的名称模式。 复制一次至named 。 将列表从扩展为。

  • 问题内容: 我的问题是: 没有这一行,我什么也没插入? 为什么不复制到新的临时文件夹,我什么也不会复制? 问题答案: 正如另一个答案所说,这样做: 在列表中添加对同一对象的引用。实际上,这里发生的是: 指清单 该引用作为参数传递给 对列表的引用存储在内部 但是请注意,两者和内部的引用都指向 同一个对象 当您执行此操作时,会发生以下情况: 创建一个新列表,并用引用原始列表中所有数据的副本。 此列表已

  • 我试图使用完整文件路径列表(大多数是唯一的)(例如“C:\Folder1\file\u 1.xls”)复制到完整文件夹路径(例如“C:\DifferentFolder”)。 完整文件路径和完整文件夹路径都因行而异。我已经成功地使用COPY完成了这一点,将所有路径都放在引号中。 继续使用此功能的问题是,我发现,在查看之前和之后的#个文件时,我只有大约95%的成功率。bat文件已完成。我不确定问题是什

  • 问题内容: 我有这样的目录/项目设置: Logger 是一个使用Gradle的Android库项目。 MyProject 是一个标准的Android项目项目,需要使用 Logger 库。 我正在使用Android Studio,并尝试将 Logger 添加到外部库中。尽管这在开发期间有效,但我收到有关在构建时找不到该类的消息。 我是Gradle的新手,但在 MyProject的 build.gra

  • 我想从现有目录中创建一个树,以便它显示其中的所有子文件夹和文件。我使用以下代码: <代码>文件文件=新文件(路径);TreeModel model=新文件TreeModel(文件);JTree tree=新JTree(模型)