0

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

# 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'文件夹中生成一个文件

# 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 的文件,它就不起作用了。

# content in the file of use_try.py
from cond import tryme

tryme.main()

我得到的错误是指 tryme.py 文件。在'with open ...'的命令中

FileNotFoundError: [Error 2] No such file or directory: 'Desktop\db\db01.txt'

好像是代码

'os.getcwd()' 

仅指调用 tryme.py 文件的文件,而不是 tryme.py 文件本身。

你知道如何修复它,以便我可以使用文件 use_try.py 在“db”文件夹中生成“db01.txt”吗?我正在使用 Python3

谢谢

4

2 回答 2

2

似乎您需要的不是工作目录,而是tryme.py文件的目录。

这可以使用__file__魔法解决:

curdir = os.path.dirname(__file__)
于 2017-02-27T08:00:45.383 回答
0

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

此行为符合预期。当前工作目录是您从中调用代码的位置,而不是存储代码的位置。

folder_test = cwd   # assume working directory will have the db/ subdir

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

于 2017-02-27T08:03:30.320 回答