2013-11-20 33 views
1

文件扩展名典型地是上一期后的所有内容。如果文件名没有“。”,则没有扩展名。当文件名以点开始时,会发生什么情况,因为linux中的隐藏文件是?区分以.dot开头的文件扩展名和隐藏文件

在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”。例如,应该打开一个对话框默认列出它,而不显示隐藏文件和2.允许所有文件扩展名?

  1. 这是一个隐藏的文件 - 它从一个周期
  2. 它实际上是一个.pdf(按文件名惯例,确保它有PDF格式的数据),或者是一个文件WITN 没有扩展?

回答

1

基于POSIX的操作系统中的文件扩展名无先天含义;他们只是一个惯例。更改扩展名不会改变文件本身的任何内容,只是用于引用它的名称。

一个文件可以有多个扩展名:

source.tar.gz 

有时一个分机代表的两个收缩:

source.tgz 

其他文件可能没有扩展名都:

.bashrc 
README 
ABOUT 
TODO 

通常,定义扩展的唯一事情是它是一个拖尾组件在非初始阶段之后的文件名的nt。含义由应用程序检查文件名称分配。 PDF阅读器可能会将重点放在名称以.pdf结尾的文件上,但它不应拒绝打开名称不正确的有效PDF文件。

注意

extension="${filename##*.}" 

是一个简单的参数扩展算子仅在文件名不以一个周期开始返回(最终)扩展的应用。它不是一个扩展操作符,它是一个前缀移除操作符。

+0

谢谢!我知道这些,请参阅编辑。在'.bashrc'中,很明显它是主文件名,而不是扩展名。那么'.pdf'呢?按照相同的规则,应该说有* no *扩展名。 – jozxyqk

+0

文件内容与其扩展名(如果有)之间是否存在任何必需的连接取决于操作系统。 '.pdf' *看起来像一个带有扩展名的空文件名,因为您熟悉使用'.pdf'来表示一个PDF文件。问问你自己:.udn是什么:它只是一个以句号开头的文件,或者是你不熟悉的某种数据类型的扩展名?这就是为什么一个好的对话框允许你显示所有文件,或者给出一个用户指定的过滤器,因为没有关于如何命名文件的硬性规则。 – chepner

+0

这正是我的观点。如果打开文件对话框是用内部分割扩展功能构建的,分割扩展应该选择哪一个?我不认为它应该是上下文敏感的。 – jozxyqk