Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中猜测文件的类型?_Python_File_Types - Fatal编程技术网

如何在python中猜测文件的类型?

如何在python中猜测文件的类型?,python,file,types,Python,File,Types,有没有一种方法或包可以猜测Python中的文件类型?例如,这是一种检测文件可能以ascii、unicode或二进制形式打开的方法吗 提前谢谢 您需要。如果您使用的是Unix操作系统(Linux或Mac),您可以访问magic。如果在Mac上,您可能需要brew安装libmagic。有一个Python库,用于将其滚动到Python脚本中 import magic mage = magic.Magic() mage.id_buffer("adsfadsf←") 最后一行将返回“UTF-8 Unic

有没有一种方法或包可以猜测Python中的文件类型?例如,这是一种检测文件可能以ascii、unicode或二进制形式打开的方法吗

提前谢谢

您需要。

如果您使用的是Unix操作系统(Linux或Mac),您可以访问
magic
。如果在Mac上,您可能需要
brew安装libmagic
。有一个Python库,用于将其滚动到Python脚本中

import magic
mage = magic.Magic()
mage.id_buffer("adsfadsf←")
最后一行将返回“UTF-8 Unicode文本,不带行终止符”

您还可以让它检查文件,这不是基于文件名,而是基于文件开头的魔法字节:


可能是这里的关键。只要试着用ASCII码打开它,如果失败,就用unicode码打开它。如果它失败(在处理过程中不知何故),请将其视为二进制文件。@t选择“是”,这是解决示例请求的一种方法,但是否有方法返回一些更详细的结果,如mime相对信息@user2246674我认为在非国际程序中,当unicode可以被解析为ascii时是可以的。如果文件可以以文本形式打开,则更好的方法可能是首先检查BOM。@flornquake谢谢,这些是我想知道的答案。与shell中的
file-b filename.png
相同。@Kyle,目前我正在windows上工作,我已经尝试了。但它不工作,它总是抛出异常,无法找到任何魔法文件。我现在就试试lib文件魔法。你用过cygwin吗?无论如何,这可能有点过分了。你需要知道文件类型做什么?@Kyle,我没有使用cygwin,只是使用pip安装lib并尝试用pythonwin导入它。我想写一个增强的搜索脚本。filemagic模块安装了pip,但无法从python解释器导入。