如何在需要 os.path.join 的 Python 中创建配置文件?
How to create configuration file in Python where need to have os.path.join?
我有几个 Python 模块,例如:
prepare_data.py
process_data.py
generate_report.py
我获取一个 Excel 文件,对其进行处理,然后创建一个 .pdf 报告。这是非常线性的过程编程。在主 caller.py
模块中,我依次调用函数:
prepare_data.do1()
prepare_data.do2()
generate_report.do3()
等等
我还有一个 Configuration.py
模块,用于存储在 prepare_data.py
、process_data.py
和 generate_report.py
.
中导入的全局变量和设置
但是,在执行过程中,我在存储 Excel 文件的同一文件夹中创建了多个中间文件。在 Configuration.py
中,根据源 Excel 文件的位置创建多个变量非常方便:
excel_file = r"C:\Data\InData.xlsx"
scratch_folder = os.path.dirname(excel_file)
out_pdf = os.path.join(scratch_folder,'PdfReport.pdf')
#scratch_folder is C:\Data
然后在实际执行工作的模块中,我想导入 Configuration.py
然后使用此模块中的变量:
...
import Configuration as cfg
create_pdf(cfg.out_pdf)
...
但是,当我调用 caller.py
并将 Excel 文件的路径作为参数提供时,我无法将 Excel 文件的路径存储在 Configuration.py
中。
如果我使用像 ConfigParser
or just plain .conf
file 这样的解决方案,如果我理解正确,我将无法利用 os.path.join()
和其他 Python 函数来构建路径。
在我的特定情况下组织配置的有效方法是什么?
你能创建一个 class 吗?
在Configuration.py中你只需声明一个变量:
foo = None
在您的主程序中,您将声明一个 class,一旦您有 excel_file 路径可用,就创建一个实例:
class ExcelFileClass(object):
def __init__(self, ef):
self.scratch_folder = os.path.dirname(ef)
...
Configuration.foo = ExcelFileClass(excel_file)
在每个导入配置的模块中,您将能够访问 Configuration.foo.scratch_folder 和其他 class 变量。如果您想对 class 变量进行验证、错误处理或其他操作,您还可以添加一个 get 方法。
汉奴
我有几个 Python 模块,例如:
prepare_data.py
process_data.py
generate_report.py
我获取一个 Excel 文件,对其进行处理,然后创建一个 .pdf 报告。这是非常线性的过程编程。在主 caller.py
模块中,我依次调用函数:
prepare_data.do1()
prepare_data.do2()
generate_report.do3()
等等
我还有一个 Configuration.py
模块,用于存储在 prepare_data.py
、process_data.py
和 generate_report.py
.
但是,在执行过程中,我在存储 Excel 文件的同一文件夹中创建了多个中间文件。在 Configuration.py
中,根据源 Excel 文件的位置创建多个变量非常方便:
excel_file = r"C:\Data\InData.xlsx"
scratch_folder = os.path.dirname(excel_file)
out_pdf = os.path.join(scratch_folder,'PdfReport.pdf')
#scratch_folder is C:\Data
然后在实际执行工作的模块中,我想导入 Configuration.py
然后使用此模块中的变量:
...
import Configuration as cfg
create_pdf(cfg.out_pdf)
...
但是,当我调用 caller.py
并将 Excel 文件的路径作为参数提供时,我无法将 Excel 文件的路径存储在 Configuration.py
中。
如果我使用像 ConfigParser
or just plain .conf
file 这样的解决方案,如果我理解正确,我将无法利用 os.path.join()
和其他 Python 函数来构建路径。
在我的特定情况下组织配置的有效方法是什么?
你能创建一个 class 吗?
在Configuration.py中你只需声明一个变量:
foo = None
在您的主程序中,您将声明一个 class,一旦您有 excel_file 路径可用,就创建一个实例:
class ExcelFileClass(object):
def __init__(self, ef):
self.scratch_folder = os.path.dirname(ef)
...
Configuration.foo = ExcelFileClass(excel_file)
在每个导入配置的模块中,您将能够访问 Configuration.foo.scratch_folder 和其他 class 变量。如果您想对 class 变量进行验证、错误处理或其他操作,您还可以添加一个 get 方法。
汉奴