gpt4 book ai didi

python - 如何导入一个模块并在该模块所在的目录中打开一个文件?

转载 作者:行者123 更新时间:2023-11-30 22:50:26 25 4
gpt4 key购买 nike

我正在尝试调用dictionary包中的模块dict.py中的函数is_english_word。这是层次结构:

DataCleaning
|___ text_cleaner.py
|___ dictionary
|___ dict.py
|___ list_of_english_words.txt

为了澄清,我将 dict.pylist_of_english_words.txt 放在一个名为 dictionary 的包中。

这是在text_cleaner.py中编写的导入语句:

导入 DataCleaning.dictionary.dict 作为字典

并且,这是在 dict.py 中编写的代码:

import os

with open(os.path.join(os.path.dirname(os.path.realpath('__file__')), 'list_of_english_words.txt')) as word_file:
english_words = set(word.strip().lower() for word in word_file)


def is_english_word(word):
return word.lower() in english_words

但是当我运行 text_cleaner.py 文件时,它显示导入错误,因为它找不到 list_of_english_words.txt:

Traceback (most recent call last):
File "E:/Analytics Practice/Social Media Analytics/analyticsPlatform/DataCleaning/text_cleaner.py", line 1, in <module>
import DataCleaning.dictionary.dict as dictionary
File "E:\Analytics Practice\Social Media Analytics\analyticsPlatform\DataCleaning\dictionary\dict.py", line 3, in <module>
with open(os.path.join(os.path.dirname(os.path.realpath('__file__')), 'list_of_english_words.txt')) as word_file:
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\Analytics Practice\\Social Media Analytics\\analyticsPlatform\\DataCleaning\\list_of_english_words.txt'

但是当我运行 dict.py 代码本身时,它没有显示错误。我可以清楚地看到 os.path.dirname(os.path.realpath('__file__')) 指向 text_cleaner.py 的目录,而不是 dict.py。如何使模块 dict.py 的导入独立于其调用位置?

最佳答案

问题是您将字符串 '__file__' 传递给 os.path.realpath 而不是变量 __file__

更改:

os.path.realpath('__file__')

致:

os.path.realpath(__file__)

关于python - 如何导入一个模块并在该模块所在的目录中打开一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39347933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com