python3,在子文件夹中导入模块时目录不正确
python3, directory is not correct when import a module in sub-folder
我有一个名为'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
谢谢
看来你需要的是不是working directory,而是tryme.py
文件的目录。
这可以使用 __file__
魔法解决:
curdir = os.path.dirname(__file__)
使用环境变量中的绝对文件名,或者期望 db/ 目录是当前工作目录的子目录。
此行为符合预期。当前工作目录是您调用代码的地方,而不是存储代码的地方。
folder_test = cwd # assume working directory will have the db/ subdir
或
folder_test = os.getEnv('TEST_DIR') # 使用 ${TEST_DIR}/db/
我有一个名为'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
谢谢
看来你需要的是不是working directory,而是tryme.py
文件的目录。
这可以使用 __file__
魔法解决:
curdir = os.path.dirname(__file__)
使用环境变量中的绝对文件名,或者期望 db/ 目录是当前工作目录的子目录。
此行为符合预期。当前工作目录是您调用代码的地方,而不是存储代码的地方。
folder_test = cwd # assume working directory will have the db/ subdir
或 folder_test = os.getEnv('TEST_DIR') # 使用 ${TEST_DIR}/db/