首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python3,当在子文件夹中导入模块时,目录不正确。

python3,当在子文件夹中导入模块时,目录不正确。
EN

Stack Overflow用户
提问于 2017-02-27 07:48:02
回答 2查看 223关注 0票数 0

我有一个名为“test”的主文件夹,内部结构是:

代码语言:javascript
复制
# folders and files in the main folder 'test'
Desktop\test\use_try.py
Desktop\test\cond\__init__.py   # empty file.
Desktop\test\cond\tryme.py
Desktop\test\db\

现在在文件tryme.py中。我想在“db”文件夹中生成一个文件

代码语言:javascript
复制
# content in the file of tryme.py
import os

def main():
    cwd = os.getcwd()    # the directory of the folder 'Desktop\test\cond'
    folder_test = cwd[:-4]   # -4 since 'cond' has 4 letters
    folder_db = folder_test + 'db/'  # the directory of folder 'db'

    with open(folder_db + 'db01.txt', 'w') as wfile:
        wfile.writelines(['This is a test.'])

if __name__ == '__main__':
    main()

如果我直接运行这个文件,没有问题,文件'db01.txt‘位于'db’文件夹中。但是,如果我运行use_try.py文件,它将无法工作。

代码语言:javascript
复制
# content in the file of use_try.py
from cond import tryme

tryme.main()

我得到的错误引用了tryme.py文件。在“打开.”的命令中

代码语言:javascript
复制
FileNotFoundError: [Error 2] No such file or directory: 'Desktop\db\db01.txt'

好像是密码

代码语言:javascript
复制
'os.getcwd()' 

只引用调用tryme.py文件的文件,而不是tryme.py文件本身。

您知道如何修复它吗?这样我就可以使用文件use_try.py在“db”文件夹中生成“db01.txt”了吗?我正在使用Python3

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-27 08:00:45

看起来您需要的是不是 工作目录,而是tryme.py文件的目录。

可以使用__file__魔术来解决这个问题:

代码语言:javascript
复制
curdir = os.path.dirname(__file__)
票数 2
EN

Stack Overflow用户

发布于 2017-02-27 08:03:30

使用来自环境变量的绝对文件名,或者期望db/目录是当前工作目录的子目录。

这种行为与预期的一样。当前工作目录是您调用代码的位置,而不是代码存储的位置。

代码语言:javascript
复制
folder_test = cwd   # assume working directory will have the db/ subdir

或folder_test = os.getEnv('TEST_DIR') #使用${TEST_DIR}/db/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42480316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档