【发布时间】: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.py
与my_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
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:获取Python中导入模块的文件相对路径的文件路径 - Python技术站