文件扩展名通常是最后一段时间之后的所有内容。如果文件名没有“。”,则没有扩展名。当文件名以点开头时会发生什么,如linux中的隐藏文件那样?
在python中,该文件没有扩展名......
>>> os.path.splitext("base.ext")
('base', '.ext')
>>> os.path.splitext(".ext")
('.ext', '')
bash中的常用方法产生另一个结果,其中只有一个扩展而没有基本部分(Extract filename and extension in Bash)......
>>> filename=".ext"
>>> extension="${filename##*.}"
>>> base="${filename%.*}"
>>> echo $base
>>> echo $extension
ext
代码应该如何处理这样的文件名?有标准吗?每个操作系统有什么不同吗?或者只是哪种最常见/一致?
[编辑]
假设你有一个只是“.pdf
”的文件。例如,一个打开的对话框默认列出它没有1.显示隐藏文件和2.允许所有文件扩展名?
答案 0 :(得分:1)
基于POSIX的操作系统中的文件扩展名没有先天的意义;他们只是一个会议。更改扩展名不会改变文件本身的任何内容,只会改变用于引用它的名称。
文件可以有多个扩展名:
source.tar.gz
有时单个扩展代表两个收缩:
source.tgz
其他文件可能根本没有扩展名:
.bashrc
README
ABOUT
TODO
通常,唯一定义扩展的是它是一个跟随非初始周期的文件名的尾随组件。检查文件名的应用程序分配含义。 PDF阅读器可能会关注名称以.pdf
结尾的文件,但它不应拒绝打开名称不包含的有效PDF文件。
请注意
extension="${filename##*.}"
只是一个参数扩展运算符的应用程序,如果文件名不以句点开头,它只返回(最终)扩展名。它不是扩展运算符,它是一个前缀删除运算符。