linux 怎么添加文件类型,如何在Linux/Unix上添加基于文件类型的文件扩展名?
以下是mimetypes的版本:#!/usr/bin/env python
"""It is a `filename -> filename.ext` filter.
`ext` is mime-based.
"""
import fileinput
import mimetypes
import os
import sys
from subprocess import Popen, PIPE
if len(sys.argv) > 1 and sys.argv[1] == '--rename':
do_rename = True
del sys.argv[1]
else:
do_rename = False
for filename in (line.rstrip() for line in fileinput.input()):
output, _ = Popen(['file', '-bi', filename], stdout=PIPE).communicate()
mime = output.split(';', 1)[0].lower().strip()
ext = mimetypes.guess_extension(mime, strict=False)
if ext is None:
ext = os.path.extsep + 'undefined'
filename_ext = filename + ext
print filename_ext
if do_rename:
os.rename(filename, filename_ext)
示例:$ ls *.file? | python add-ext.py --rename
avi.file.avi
djvu.file.undefined
doc.file.dot
gif.file.gif
html.file.html
ico.file.obj
jpg.file.jpe
m3u.file.ksh
mp3.file.mp3
mpg.file.m1v
pdf.file.pdf
pdf.file2.pdf
pdf.file3.pdf
png.file.png
tar.bz2.file.undefined
遵循@Phil H的响应,遵循@csl的响应:#!/usr/bin/env python
"""It is a `filename -> filename.ext` filter.
`ext` is mime-based.
"""
# Mapping of mime-types to extensions is taken form here:
# http://as3corelib.googlecode.com/svn/trunk/src/com/adobe/net/MimeTypeMap.as
mime2exts_list = [
["application/andrew-inset","ez"],
["application/atom+xml","atom"],
["application/mac-binhex40","hqx"],
["application/mac-compactpro","cpt"],
["application/mathml+xml","mathml"],
["application/msword","doc"],
["application/octet-stream","bin","dms","lha","lzh","exe","class","so","dll","dmg"],
["application/oda","oda"],
["application/ogg","ogg"],
["application/pdf","pdf"],
["application/postscript","ai","eps","ps"],
["application/rdf+xml","rdf"],
["application/smil","smi","smil"],
["application/srgs","gram"],
["application/srgs+xml","grxml"],
["application/vnd.adobe.apollo-application-installer-package+zip","air"],
["application/vnd.mif","mif"],
["application/vnd.mozilla.xul+xml","xul"],
["application/vnd.ms-excel","xls"],
["application/vnd.ms-powerpoint","ppt"],
["application/vnd.rn-realmedia","rm"],
["application/vnd.wap.wbxml","wbxml"],
["application/vnd.wap.wmlc","wmlc"],
["application/vnd.wap.wmlscriptc","wmlsc"],
["application/voicexml+xml","vxml"],
["application/x-bcpio","bcpio"],
["application/x-cdlink","vcd"],
["application/x-chess-pgn","pgn"],
["application/x-cpio","cpio"],
["application/x-csh","csh"],
["application/x-director","dcr","dir","dxr"],
["application/x-dvi","dvi"],
["application/x-futuresplash","spl"],
["application/x-gtar","gtar"],
["application/x-hdf","hdf"],
["application/x-javascript","js"],
["application/x-koan","skp","skd","skt","skm"],
["application/x-latex","latex"],
["application/x-netcdf","nc","cdf"],
["application/x-sh","sh"],
["application/x-shar","shar"],
["application/x-shockwave-flash","swf"],
["application/x-stuffit","sit"],
["application/x-sv4cpio","sv4cpio"],
["application/x-sv4crc","sv4crc"],
["application/x-tar","tar"],
["application/x-tcl","tcl"],
["application/x-tex","tex"],
["application/x-texinfo","texinfo","texi"],
["application/x-troff","t","tr","roff"],
["application/x-troff-man","man"],
["application/x-troff-me","me"],
["application/x-troff-ms","ms"],
["application/x-ustar","ustar"],
["application/x-wais-source","src"],
["application/xhtml+xml","xhtml","xht"],
["application/xml","xml","xsl"],
["application/xml-dtd","dtd"],
["application/xslt+xml","xslt"],
["application/zip","zip"],
["audio/basic","au","snd"],
["audio/midi","mid","midi","kar"],
["audio/mpeg","mp3","mpga","mp2"],
["audio/x-aiff","aif","aiff","aifc"],
["audio/x-mpegurl","m3u"],
["audio/x-pn-realaudio","ram","ra"],
["audio/x-wav","wav"],
["chemical/x-pdb","pdb"],
["chemical/x-xyz","xyz"],
["image/bmp","bmp"],
["image/cgm","cgm"],
["image/gif","gif"],
["image/ief","ief"],
["image/jpeg","jpg","jpeg","jpe"],
["image/png","png"],
["image/svg+xml","svg"],
["image/tiff","tiff","tif"],
["image/vnd.djvu","djvu","djv"],
["image/vnd.wap.wbmp","wbmp"],
["image/x-cmu-raster","ras"],
["image/x-icon","ico"],
["image/x-portable-anymap","pnm"],
["image/x-portable-bitmap","pbm"],
["image/x-portable-graymap","pgm"],
["image/x-portable-pixmap","ppm"],
["image/x-rgb","rgb"],
["image/x-xbitmap","xbm"],
["image/x-xpixmap","xpm"],
["image/x-xwindowdump","xwd"],
["model/iges","igs","iges"],
["model/mesh","msh","mesh","silo"],
["model/vrml","wrl","vrml"],
["text/calendar","ics","ifb"],
["text/css","css"],
["text/html","html","htm"],
["text/plain","txt","asc"],
["text/richtext","rtx"],
["text/rtf","rtf"],
["text/sgml","sgml","sgm"],
["text/tab-separated-values","tsv"],
["text/vnd.wap.wml","wml"],
["text/vnd.wap.wmlscript","wmls"],
["text/x-setext","etx"],
["video/mpeg","mpg","mpeg","mpe"],
["video/quicktime","mov","qt"],
["video/vnd.mpegurl","m4u","mxu"],
["video/x-flv","flv"],
["video/x-msvideo","avi"],
["video/x-sgi-movie","movie"],
["x-conference/x-cooltalk","ice"]]
#NOTE: take only the first extension
mime2ext = dict(x[:2] for x in mime2exts_list)
if __name__ == '__main__':
import fileinput, os.path
from subprocess import Popen, PIPE
for filename in (line.rstrip() for line in fileinput.input()):
output, _ = Popen(['file', '-bi', filename], stdout=PIPE).communicate()
mime = output.split(';', 1)[0].lower().strip()
print filename + os.path.extsep + mime2ext.get(mime, 'undefined')
以下是旧python版本(未测试)的代码片段:#NOTE: take only the first extension
mime2ext = {}
for x in mime2exts_list:
mime2ext[x[0]] = x[1]
if __name__ == '__main__':
import os
import sys
# this version supports only stdin (part of fileinput.input() functionality)
lines = sys.stdin.read().split('\n')
for line in lines:
filename = line.rstrip()
output = os.popen('file -bi ' + filename).read()
mime = output.split(';')[0].lower().strip()
try: ext = mime2ext[mime]
except KeyError:
ext = 'undefined'
print filename + '.' + ext
它应该可以在Python2.3.5上工作(我想)。
linux 怎么添加文件类型,如何在Linux/Unix上添加基于文件类型的文件扩展名?相关推荐
- android 首选网络类型,如何在adb android上更改首选网络类型? - 程序园
这适用于我的设备: adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "up ...
- 直接读取ftp服务器文件,如何在ftp服务器上只读取十二个文件?
如何只读取12个文件导致我只读取ftp 服务器中的所有文件,每4分钟文件添加一个新文件.如何在ftp服务器上只读取十二个文件? 感谢您的帮助,我是初学者在API编程:) if(files.length ...
- linux下载带中文名的文件夹,如何在Linux下删除文件名是乱码或者带有特殊字符的文件...
今天遇到一个问题,一个文件名是"-MXV9.log",直接用rm删除的时候就报错 [localhost]rm -MXV9.log rm: illegal option -- M r ...
- 如何在Android手机上添加“Recycle Bin”?
我们电脑里的回收箱是我们一直在找的东西.它作为一种备份,我们将始终访问我们删除的文件,无论是否意外.毫无疑问,它请继续阅读,了解如何在Android设备上添加一个. 还有一些应用可以帮助您在Andro ...
- 如何在H5页面上添加音乐播放
在制作网页的时候,经常会遇到一些带音乐播放的场景,作品的右上角有一个音频按钮,会播放音乐,点击切换播放和暂停.下面就讲一讲如何在h5网页上添加音乐播放. 其实是很简单的,只需要简单几步就可以完成了 1 ...
- html5中加入音乐怎么弄,如何在H5页面上添加音乐播放
在制作网页的时候,经常会遇到一些带音乐播放的场景,作品的右上角有一个音频按钮,会播放音乐,点击切换播放和暂停.下面就讲一讲如何在h5网页上添加音乐播放. 其实是很简单的,只需要简单几步就可以完成了 1 ...
- 如何在Mac电脑上添加或删除受信任的电话号码?
受信任的电话号码用于在其他设备或浏览器登陆时验证您的身份,获取验证码在另一设备上登陆.那我们如何在Mac电脑上添加或删除受信任的电话号码呢?小编给大家带来了详细的图文教程,需要的朋友欢迎参考操作! 具 ...
- 如何在Apple Watch上添加闹钟?
在Apple Watch上使用"闹钟" App,可以让 Apple Watch 在设定的时间播放声音或振动.那我们如何在Apple Watch上添加闹钟呢?感兴趣的朋友快和小编一起 ...
- linux 怎么不检查gpg,如何在Linux上使用GPG加密和解密文件 | MOS86
如何在Linux上使用GPG加密和解密文件... GnuPrivacy Guard (GPG) allows you to securely encrypt files so that only th ...
- linux桌面添加软件快捷方式,如何在 Ubuntu 桌面手动添加应用快捷方式
原标题:如何在 Ubuntu 桌面手动添加应用快捷方式 在这篇快速指南中,你将学到如何在 Ubuntu 桌面和其他使用 GNOME 桌面的发行版中添加应用图标. -- Abhishek Prakash ...
最新文章
- 算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen
- [C#] 查标准正态分布表
- video视频播放以及主流浏览器兼容
- 【转】windows Server2012安装iis
- 在ASP.NET中使用Global.asax文件
- Svn正确的使用方法
- c# 从一组数中随机抽取一定个数_Python随机模块22个函数详解
- 记,NSProxy需要实现哪些方法?
- 大数据好还是不好_学python好还是大数据好?想学IT,但有点搞不清方向的人可以看看...
- linux nginx 清除缓存文件,linux nginx 内置缓存怎么去掉
- h5和web前端的区别
- 亟需为个人信息安全“保驾护航”
- 使用Kotlin的Android菜单
- Servlet之间的跳转(MVC模式)
- uniapp跳转指定小程序
- 真相了!关于“写书”这件事
- linux用mame玩游戏,Ubuntu下用xmame玩街机游戏
- 修改win服务器防火墙端口号,Windows Server 修改防火墙和远程桌面(3389)默认端口...
- 网页JS自动化脚本(一)安装油猴或暴力猴等脚本管理器并新建脚本
- 计算机专业老师考什么教师,老师!计算机专业的考试也太太太太太太难了!
热门文章
- javascript 常用代码技巧大收集
- linux 集成 3g 模块 串口 option,华为等 3G、4G模块拨号上网过程分析
- JAVA继承类初始化顺序
- window和Linux下安装JDK配置环境变量
- 【更新】ReSharper v2018.3发布
- 遍历查询+从非根节点开始遍历+从下向上遍历树+从层次化查询中删除节点和分支...
- CloudStack升级中文指南:4.1.x/4.2.x 至4.3版本
- 304 Not Modified 的意思 (Web的Cache问题)
- 使用web.xml控制Web应用的行为
- Silverlight入门