使用双点或双减号作为分隔符是个好主意吗?我正在尝试为实验科学数据找到一个好的命名约定。例如:
2017-12-11T19-45..JDoe-042..UO2(NO3)2-EtOAc_dist..150.3K..1.234mM.dat
2017-12-11T19-45--JDoe-042--UO2(NO3)2-EtOAc_dist--150.3K--1.234mM.dat
我的理由:
- 为了确保跨平台的兼容性,唯一合适的字符是
_
-
.
及其组合; - 在我的情况下,它们都不能单独使用:
_
为空间预留;由于区分大小写的化学公式,我不能使用 camelCase。-
通常是内部实验室代码的一部分,此外,它还被用作冒号的替代品:
(修改后的 ISO 8601 符号)和比率;.
是一个小数点。
- 在他们的组合中,最流行的似乎是
_-_
. 但是,这是 3 个字符,并且文件名已经很长(从示例中可以看出),所以如果可能的话,我想坚持使用两个字符。 - 从视觉上我发现很难快速区分
__
and_
,而--
vs-
和.
vs..
对我来说很容易区分。 - 我没有包括逗号
,
(正如评论中正确建议的那样,这也是一个值得考虑的可行字符),因为我认为它很容易与一个 dot 混淆.
,它已经主要用于带有 a 的数值小数点。
根据 SE 网络上的几个帖子,例如
我会假设两者--
都是..
完全可以接受的,我正在考虑最终选择..
. 但是,我不确定,尤其是关于正则表达式或 python 脚本如何处理这些文件和文件夹(我对这两者的经验都很少,但我正在学习)。
不考虑专用软件的行为,您会说这些分隔符对于常见的文件系统和脚本语言通常是安全的吗?
在 Unix/Linux 中,一个经过仔细审查和猜测的设计决策之一是对您有利的文件系统功能:除了NUL
\0
(ASCII 000) 和斜杠/
(后者是为文件路径保留)。POSIX 兼容和/或编写良好的程序和脚本将处理这种宽容,但不幸的是,有无数的例子没有。然而,他们往往会吐槽一组非常特殊的字符,而这些字符不是点或破折号。(空格和换行符是最麻烦的两个。)事实上,点和破折号的使用非常广泛。常用工具、语言和正则表达式可以很好地处理它们……
...除了一个小小的例外。(当然,对吗?)我没有看到任何迹象表明您打算这样做,但应该注意:避免在名称开头使用破折号。当然,这是合法的,但是存在太多的程序会不正确地处理这些名称,从而导致它们被解释为命令行选项/标志。例如,如果一个脚本像这样将文件名传递给另一个脚本:
some-script --my-dash-first-file ...
那么看到类似Unknown option '--my-dash-first-file'
.TL;DR如果您避免使用以破折号开头的名称,您提出的方案是安全的。
额外的注意事项:虽然点本身很常见,特别是为了将文件的基本名称与其“扩展名”(例如
foo.txt
)分开,但成对的点通常单独出现......它们具有特殊含义:当前的父目录目录 (..
) 或路径 (/foo/bar/../baz
) 中的前一个目录。因此,虽然这不会导致任何技术问题,但名称中的双点有点不合常规,可能会导致一些用户重复使用。