【发布时间】: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