首页 > 解决方案 > 额外文件的目录约定

问题描述

我编写了一个(python)脚本,它识别其子网(NAT 子网)上的所有节点,如果记录中不存在 IP 地址,则发送一封电子邮件。对于这种规模的项目,我不想运行数据库。我认为一个由新行分隔的文本文件是合适的,每行都有一个 IP 地址。放置此文件的目录的适当约定是什么?

标签: python

解决方案


没有真正的约定,这个问题的答案可能有点固执己见,很大程度上取决于脚本的确切用例。

您有以下选择:

  1. 当前工作目录中的数据文件
  2. 与脚本在同一目录中的数据文件
  3. 相对于主目录的文件夹中的数据文件(如果不存在将创建)
  4. 像三个,但有一个额外的配置文件名称
  5. 在像 /var/run/toolname 这样的系统文件夹中
  6. 脚本的显式参数指定文件名

1.) 当前工作目录

缺点:-它会强制您 cd 进入您拥有数据的目录,否则脚本将无法工作或从头开始创建新数据

临:

  • 作为同一台机器上的同一用户,您可以拥有多个项目,每个项目都使用自己的数据。

2.) 与脚本在同一目录中的数据文件

临:

  • 你不必在任何地方 cd 。你知道在哪里可以找到数据。

缺点:

  • 您需要对脚本所在目录的写入权限(如果由 Web 服务器执行并且发现漏洞,则可能是安全问题)
  • 每个脚本只有一个数据文件
  • 没有两个用户可以使用不同的数据执行脚本

3.)相对于主目录的文件夹中的数据文件(如果不存在则将创建)

临:

  • 脚本在一个目录中,但每个用户都有自己的数据。
  • 如果脚本目录被删除,脚本被卸载并重新安装,数据将保留。
  • 不需要脚本目录的特殊写入权限。

缺点:-您删除脚本目录,数据仍然存在并且可能永远不会被删除。- 一个用户无法运行多个实例 将脚本用于多个项目 - 卸载脚本后需要清理数据

4.(如 3.)但有一个额外的配置文件/项目名称

临:

  • 与 3 相同。)
  • 可以并行运行多个项目/配置文件(例如,firefox 允许使用配置文件运行,这些配置文件都存储在 中~/.mozilla/firefox,但每个配置文件都会创建自己的子目录~/.mozilla/firefox/xxxx.profilename

缺点:

  • 与 3 相同。)

5.) 在像 /var/run/toolname 这样的系统文件夹中

临:

  • 对于作为服务/服务器运行的工具来说可能很好

缺点: - 需要管理员权限(至少在安装期间)

6.)

优点: - 你可以做任何你想做的事

缺点: - 您必须指定一个额外的参数(除非您将其他建议的行为作为默认行为,并且仅当您希望具有不同的行为时才使用该选项。

所有解决方案都应该适合您。

对于您的工具 5.) 3.) 2.) 6.) 可能是更好的选择。我假设您的脚本将作为 cron 作业或类似的东西运行。


推荐阅读