使用双点或双减号作为分隔符是个好主意吗?我正在尝试为实验科学数据找到一个好的命名约定。例如:
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
Run Code Online (Sandbox Code Playgroud)
我的理由:
_ - .及其组合;_预留给空间;由于区分大小写的化学公式,我不能使用驼峰式命名法。 -通常是内部实验室代码的一部分,而且它被用作:时间(修改后的 ISO 8601 符号)和比率的冒号的替代品; . 是一个小数点。 _-_。但是,这是 3 个字符,而且文件名已经很长(从示例中可以看出),因此如果可能,我想坚持使用两个字符。 __和_,而--VS-和.VS..相当区别的我。 ,(因为它在评论中得到了正确的建议,这也是一个需要考虑的可行字符),因为我认为很容易将它与单个点混淆,该点.已经主要用于数值与小数点。根据 SE 网络上的几篇帖子,例如
我会假设这两个--和..是完全可以接受的,我想的最终选择..。但是,我不确定,尤其是关于正则表达式或 python 脚本如何处理这些文件和文件夹(我对两者的经验都很少,但我正在学习)。
不考虑专业软件的行为,您会说这些分隔符对于常见的文件系统和脚本语言通常是安全的吗?
B L*_*yer 10
在 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)。因此,虽然这不会导致任何技术问题,但名称中的双点有点不合常规,可能会导致一些用户重复使用。