【问题标题】:How to guess the type of a file in python? [duplicate]如何在python中猜测文件的类型? [复制]
【发布时间】:2013-09-17 14:21:55
【问题描述】:

有没有办法或包来猜测 Python 中文件的类型?例如,它是一种检测文件是否可以作为 ascii、unicode 或二进制文件打开的方法?

提前致谢!

【问题讨论】:

  • EAFP 可能是这里的关键。只需尝试以 ASCII 格式打开它,如果失败,请以 unicode 格式打开它。如果失败(不知何故,在您的处理过程中),将其视为二进制。
  • @Tadeck 是的,这是解决示例请求的一种方法,但有没有办法返回一些更详细的结果,例如 mime 相关信息?
  • @user2246674 我认为在非国际程序中可以将 unicode 解析为 ascii 时可以。如果文件可以作为文本打开,更好的方法可能是先检查 BOM。
  • @flornquake 谢谢,这些是我想知道的答案。

标签: python file types


【解决方案1】:

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

import magic
mage = magic.Magic()
mage.id_buffer("adsfadsf←")

最后一行将返回“UTF-8 Unicode 文本,没有行终止符”

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

【讨论】:

  • 与 shell 中的file -b filename.png 相同。
  • @Kyle,目前我正在使用 Windows,我已经尝试过 python-magic。但它不起作用,它总是会抛出异常找不到任何魔法文件。我现在就试试 lib filemagic。
  • 你用过cygwin吗?无论如何,这可能是矫枉过正。您需要知道什么文件类型?
  • @Kyle,我没有使用cygwin,只是使用pip安装lib并尝试使用pythonwin导入它。我想写一个增强的搜索脚本。
【解决方案2】:

你想要filemagic module

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 2023-01-20
    • 1970-01-01
    • 2011-08-02
    • 2013-01-16
    • 1970-01-01
    • 2020-08-24
    • 2012-04-02
    相关资源
    最近更新 更多