目录结构:

--root

----read_config.py

----subfolder

------subfolder_script.py

----data

------配置表.xlsx


# read_config.py

from pathlib import Path
from pandas import read_excel

PATH_CONFIG = "data/配置表.xlsx"  # subfolder/file 或 ./subfolder/file 不能/subfolder/file 或 .subfolder/file
PATH_CONFIG = Path(__file__).parent / PATH_CONFIG


def read_config(path=PATH_CONFIG):
    config = {}
    for _, df in read_excel(path, sheet_name=None).items():
        if 'name' in df and 'value' in df:
            df.index = df['name']
            df = df[['value']]
            config.update({name: value['value'] for name, value in df.to_dict('index').items()})
    return config
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
# subfolder_script.py

from pathlib import Path
from sys import path

root = Path(__file__).resolve().parent.parent
# 有的情况下 控制台 从根目录 运行子目录脚本 ModuleNotFoundError 需要这一步 用于添加父目录的脚本 父目录的文件相对路径可以直接读取
path.append(root.as_posix())
from read_config import read_config

# 而另外的情况下 idea中 ctrl+shift+f10 从子目录直接运行 不需要path.append(root) 添加父目录的脚本 加上也不影响
# 但是父目录的文件相对路径 FileNotFoundError 必须转为绝对路径 或者在脚本内部已经转为绝对路径了
config = read_config()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.


有的情况下 控制台 从根目录 运行子目录脚本 ModuleNotFoundError 需要sys.path.append(root) 用于添加父目录的脚本 父目录的文件相对路径可以直接读取

而另外的情况下 idea中 ctrl+shift+f10 从子目录直接运行 不需要sys.path.append(root) 添加父目录的脚本 加上也不影响

但是父目录的文件相对路径 FileNotFoundError 必须转为绝对路径 或者在脚本内部已经转为绝对路径了