【问题标题】:Get Path of File Relative Path of File that Imported Module in Python获取Python中导入模块的文件相对路径的文件路径
【发布时间】:2023-04-03 02:45:01
【问题描述】:

我在my_program.py中有这个代码:

from my_module import do_stuff_with_file

do_stuff_with_file("hi.txt")

这是my_module.py

def do_stuff_with_file(fileName):
    print(fileName)
    # do stuff with the file

my_module.pymy_program.py 不在同一目录中时,会出现文件未找到错误。使用此代码 (my_module.py) 解决了此问题。

def do_stuff_with_file(fileName):
    fileName = os.path.join(os.path.dirname(sys.modules['__main__'].__file__), fileName)
    print(fileName)
    # do stuff with file

my_program.py 由不同目录中的文件导入时会出现问题。

我该如何解决这个问题?

【问题讨论】:

  • 问题不清楚。您能否重申观察到的行为和所需的输出?
  • @Lenormju,我试图澄清这个问题:)。如果您需要示例,请查看 github.com/kethan1/playsound2,并使用 pytest 运行测试
  • 这是与您的项目一起交付的文件是否应该与模块相关,或者此代码是否应该与任何地方的任何文件一起使用?由于my_program.py 使用了相对路径名,因此它相对于os.getcwd() 所说的任何内容都是当前路径。如果从命令行运行,则它是 shells 当前目录。否则它...,好吧,谁知道呢?
  • do_stuff_with_file 会尝试修复相对路径名,这很奇怪。它不应该与任何东西一起使用吗?您可能想要在my_program.py 中进行任何路径操作。我们需要知道您希望此文件在哪里。
  • @tdelaney my_module.py 可能位于my_program.py 的子目录或父目录中。修复路径可以解决这个问题(使用sys.modules['__main__'].__file__)。例如,当使用 pytest 运行(或从另一个 python 文件导入my_program.py)时,就会出现问题。

标签:
python
import
module
filepath