如何实现读取各个包的静态文件?

假设有这样1个目录结构:

demo
-- main.py
---- hello
------ username
-------- __init__.py
-------- username.txt
-------- main.py
------ address
-------- __init__.py
-------- address.txt
-------- main.py
---- common
------ utils.py

现在想在common的utils中编写1个公用函数,主要用于读取hello下目录下的静态文件,在这里假定其函数名称为get_filename_data,其代码类似如下:

def get_filename_data(filename):
   data = open(filename).read()
   return data

现在想在username及address包下的main模块中将上面common包下utils模块中的get_filename_data导入进来,传入1个文件名称即可读取当前包下的静态文件。
比如,在username包的main模块下有这样一段代码:

from common.utils import get_filename_data

def main():
    data = get_filename_data('userame.txt')
    print(data) 

同理,address模块中的代码也类似。
最后,在demo包的main模块中将hello包下模块导入:

from hello.username.main import main

main()

现在希望对get_filename_data函数中的代码进行修改,当运行demo包下main模块,程序可以正常运行,而不会出现找不到文件的情况的发生。

阅读 2.4k
1 个回答

调用get_filename_data的时候传文件完整路径呗。
比如:在username的main函数里:

import os
from common.utils import get_filename_data

def main():
    dir_path = os.path.dirname(os.path.abspath(__file__))
    file_path = os.path.join(dir_path, 'username.txt')
    data = get_filename_data(file_path)
    print(data) 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题