【问题标题】:FileNotFoundError: [Errno 2] No such file or directory when trying to use local packageFileNotFoundError: [Errno 2] 尝试使用本地包时没有这样的文件或目录
【发布时间】:2021-02-06 09:35:21
【问题描述】:

让我们考虑这个目录结构:

package/
    rooster.py
    files/
        rooster.txt
app/
    main.py

以及两个 Python 文件的内容:

rooster.py:

def roost():
    file = open('files/rooster.txt')
    return file.read()

main.py:

from package.rooster import roost
print(roost())

运行 main.py 返回错误:

FileNotFoundError: [Errno 2] No such file or directory: 'files/rooster.txt'

这显然是因为工作目录是 app/ 并且没有 app/files/rooster.txt 文件。因此错误。对于这样的场景,Python 提供了什么解决方案?

【问题讨论】:

    标签: python import directory path


    【解决方案1】:

    也许你可以使用文件的完整路径,如果它总是相同的话,这应该可以工作

    【讨论】:

      【解决方案2】:

      解决方案: 我不确定我是否正确理解了这个问题,但这段代码可能会解决您的问题。

      rooster.py

      def roost(path):
          import os
          file = open(os.path.join(path, 'files/rooster.txt'))
          return file.read()
      

      ma​​in.py

      import os
      from pathlib import Path
      from rooster import roost
      
      p = Path(__file__).parents[1]
      package_dir = os.path.join(p, 'package')
      print(roost(package_dir))
      

      输出:

      Hello World1
      Hello World2
      Hello World3
      

      目录结构:

      testCode/
          package/
              rooster.py
              files/
                  rooster.txt
          app/
              main.py
      

      如果有任何问题,请告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-03
        • 2021-08-24
        • 2021-03-07
        • 2015-06-09
        • 2021-04-01
        • 2021-10-15
        相关资源
        最近更新 更多