在config中存储公共目录路径的最佳实践

时间:2016-12-30 18:03:42

标签: python yaml config

我正在建立一个本地的职业运营商,可以执行各种维护任务,从FTP到数据抓取和初步分析。由于它基于通用文件系统运行,因此需要知道在哪里可以找到某些文件夹和文件。该应用程序将没有数据库,主要依赖于YAML格式的配置文件。

我正在为这些路径设计配置文件,我想知道是否有与此相关的最佳实践。我尝试搜索,但我只能找到配置文件格式之间的参数,而不是其内容的设计。

以下是我正在讨论的方法:

  1. 使用通用字典名称嵌套路径,因此可以递归循环以通过os.path生成绝对路径

    fileserver:
      drive:
        path: Shared Files
        myfolder:
          path: MyFolder
          reports:
            path: Daily Reports
            other:
              path: Other Reports
            some:
              path: Some Reports
            some2014:
              path: Some Reports 2014
            some2015:
              path: Some Reports 2015
        another-folder:
          path: 1 - Another Folder
          reports:
            path: Daily Reports
      ip: 192.168.0.0
      path: \\MYSERVER1
    
  2. 定义常见的dict名称并添加“父”属性,然后使用父属性走到服务器根目录。

    server:
     ip: 192.168.0.0
     path: \\MYSERVER1
    drive:
     path: Shared Files
     parent: server
    myfolder:
     path: MyFolder
     parent: drive
    myreports:
     path: Daily Reports
     parent: myfolder
    somereports:
     path: Some Reports
     parent: myreports
    some2015reports:
     path: Some Reports 2015
     parent: myreports
    
    etc...
    
  3. 使用占位符约定,并在加载配置文件时将它们正则化为绝对路径:

    server: \\MYSERVER1
    drive: [server]\Shared Files
    myfolder: [drive]\My Folder
    
    etc.
    
  4. 在完美的世界中,当技术发生变化时,非技术人员可以轻松更新。有没有人有实现这样的经验?我认为我的解决方案都不是很好,我很想看到这种配置的生产示例。

1 个答案:

答案 0 :(得分:0)

对我而言,1号似乎是最具扩展性的,因此是我的选择。

我会对它做出一些改变,因为我发现它有点难以一目了然。

fileserver:
  drive:
    path: Shared Files
    myfolder:
      path: MyFolder
      reports:
        paths:
          - Daily Reports
          - Other Reports
          - Some Reports
          - Some Reports 2014
          - Some Reports 2015
    another-folder:
      path: 1 - Another Folder
      reports:
        paths:
          - Daily Reports
  ip: 192.168.0.0
  path: \\MYSERVER1