python - 额外文件的目录约定
问题描述
我编写了一个(python)脚本,它识别其子网(NAT 子网)上的所有节点,如果记录中不存在 IP 地址,则发送一封电子邮件。对于这种规模的项目,我不想运行数据库。我认为一个由新行分隔的文本文件是合适的,每行都有一个 IP 地址。放置此文件的目录的适当约定是什么?
解决方案
没有真正的约定,这个问题的答案可能有点固执己见,很大程度上取决于脚本的确切用例。
您有以下选择:
- 当前工作目录中的数据文件
- 与脚本在同一目录中的数据文件
- 相对于主目录的文件夹中的数据文件(如果不存在将创建)
- 像三个,但有一个额外的配置文件名称
- 在像 /var/run/toolname 这样的系统文件夹中
- 脚本的显式参数指定文件名
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 作业或类似的东西运行。
推荐阅读
- php - 复杂的 SQL 函数,“语法错误或访问冲突:1065 查询为空”
- powerbi - Power BI Desktop 中的数据不刷新
- ios - 使用图像名称初始化 ImageView
- amazon-web-services - pyarrow 作为 lambda 层
- pandas - 如何在函数后将值从 pandas 组添加到新的 Dataframe?
- ssas - SSAS MDX:带日期范围的时间计算
- javascript - 为什么我的 React 应用程序只在没有缓存的情况下刷新加载?
- reactjs - 如何在 styled-components 的 GlobalStyles 中导入 Ant Design css 样式?
- python - 仅来自 Qt5 ColorDialog 的颜色渐变
- reactjs - React JS Ant Design 上传 - 默认目录