我有一个文件夹已满,我想搜索一些内部的字符串。问题是,某些文件可能是zip,exe,ogg等。 我可以检查它是什么类型的文件,所以我只打开并通过txt,PHP等文件进行搜索。 我不能依赖文件扩展名。如何检查文件是否包含纯文本?
回答
您可以使用Python interface至libmagic来识别文件格式。
>>> import magic
>>> f = magic.Magic(mime=True)
>>> f.from_file('testdata/test.txt')
'text/plain'
更多示例请参见repo。
如果你在linux上,你可以解析file
命令行工具的输出。
使用Python的mimetypes
库:
import mimetypes
if mimetypes.guess_type('full path to document here')[0] == 'text/plain':
# file is plaintext
mimetypes使用文件的filename.ext来确定文件内容。通过重命名文件很容易欺骗。在* nix系统中使用“file”命令更安全,因为它在文件内部查看内容的外观。 “文件”也可能被欺骗,但至少它会查看内容。像下面的思南提到的蟒蛇魔法会更安全。欲了解更多信息,请在* nix上做一个“man file”和“man magic”。 – 2010-03-18 19:29:25
有趣的是,OP明确表示他不能依赖文件扩展名,然后标记正确的答案,只查看文件扩展名... – 2010-03-18 22:26:12
尝试这样的事:
def is_binay_file(filepathname):
textchars = bytearray([7,8,9,10,12,13,27]) + bytearray(range(0x20, 0x7f)) + bytearray(range(0x80, 0x100))
is_binary_string = lambda bytes: bool(bytes.translate(None, textchars))
if is_binary_string(open(filepathname, 'rb').read(1024)):
return True
else:
return False
使用这样的方法:
is_binay_file('<your file path name>')
这将返回True,如果文件是二进制如果文本是文字,则输入False - 应该很容易将其转换为反映您的需求fx。使功能is_text_file
- 我离开那个由你决定
- 1. jQuery检查Cookie是否包含文本
- 2. 检查td是否包含文本?
- 3. 检查文本是否包含多个@
- 4. 如何检查文本文件中是否包含多行文本?
- 5. 检查是否任何文本框包含文本
- 6. 如何检查变量是否包含特定文本
- 7. 如何检查一个字符串是否包含zalgo文本?
- 8. 如何检查是否一个文本框包含在VB
- 9. NAnt:检查包含文件是否已包含
- 10. 如何在golang中检查文件是否包含字符串?
- 11. 如何检查文件是否包含“。” (点)运算符
- 12. 如何检查是否包含jQuery UI文件?
- 13. 如何检查一个txt文件是否包含一个词
- 14. 如何检查jQuery变量的文本是否包含特定的文本?
- 15. 如何在纯动作项目(包/类)中包含外部纯文本文件?
- 16. 如何检查包含分隔符的文本文件是否在最后?是否存在如何删除它?
- 17. 如何检查文件夹是否仅包含使用php的文件
- 18. 如何在emacs org模式下包含纯文本文件
- 19. 检查网页是否含有文本
- 20. 如何检查文件是否为文本文件或不ASP
- 21. Dynamics CRM:Odata查询,用于检查文件附件文件名是否包含unicode'#'
- 22. 如何检查DataTable是否包含DataRow?
- 23. 如何检查NSString是否包含'%'?
- 24. 如何检查字符串是否只包含英文字母?
- 25. JAVA:如何检查网站文档是否包含单词?
- 26. 检查是否包含特定的文本
- 27. 检查散列是否有包含一些文本的键
- 28. 检查页面是否包含PHP中的一些文本
- 29. jQuery Selector - 检查当前div属性是否包含文本?
- 30. 检查文本框是否包含无效字符
你可以直接调用'file'吗?它涵盖了很多类型。 http://linux.die.net/man/1/file – 2010-03-18 17:59:00