-1

我目前在我的个人 python 项目的目录中有几个文件夹。文件夹是模块和资源。我正在编写一个 python 文件,该文件将驻留在模块文件夹中,但需要从资源文件夹访问文件。

我以这种方式组织我的项目的原因是我计划为我将要制作的类创建一堆单独的 .py 文件。然后在根目录中,我将拥有我的主脚本,该脚本将在需要时从类中导入。

旁注:我的项目是一个 python 脚本,通过使用掷骰子和记录信息,可以使掷骰子的趣味性提高 1000 倍。

-编辑-

我不确定我是否清楚,但我需要知道模块文件夹中的 some-file.py 如何从资源文件夹中的 some-other-file.txt 中读取。我无法将该位置硬编码为“C:/rootFolder/resources”,因为我打算与朋友分享它(另外我不能保证它在我自己的系统上始终保持在同一个位置)。

4

2 回答 2

3

您可以将路径添加到包含modulesresources文件夹的目录system path(sys.path),或者通过添加文件PYTHONPATH将两者modulesresources目录转换为__init__.py

现在要访问这些模块,只需导入它们:

import modules
from modules import some_module
import modules.some_module

编辑:

要从模块文件夹中的文件中读取资源文件夹中的 txt,请使用相对路径:

with open("../resources/file.txt") as f:
    #do something with file

..表示当前文件夹的父文件夹。

如果您当前的工作目录不是模块,那么使用这个:

import os
cwd = os.path.dirname(os.path.realpath(__file__))      #path to current file
par_dir = os.path.split(cwd)[0]                        #path to parent directory
my_file =  os.path.join(par_dir,"resources/file.txt")  #path to file in resources dir
with open(myfile) as f:
    #do something
于 2013-05-12T02:57:33.793 回答
0

有几种不同的方法可以做到这一点,使用空__init__.py文件来表示它是一个模块目录(来自这里):

sound/                          Top-level package
      __init__.py               Initialize the sound package
      modules/                  Subpackage for file format conversions
              __init__.py
              onefile.py
              auwrite.py
              ...
      resources/                  Subpackage for sound effects
              __init__.py
              another.py
              ...
      filters/                  Subpackage for filters
              __init__.py
              equalizer.py
              vocoder.py

              ...

sys或者您可以使用(更多信息here)将目录添加到PATH

import sys
sys.path.append("C:/resources")
于 2013-05-12T02:56:29.213 回答