如何在Python中从二进制文件中获取可打印的字符串?

时间:2013-08-13 05:16:04

标签: python string video binary

我正在制作一个Python脚本,根据日期对照片进行排序。我也希望包含视频,但没有像照片的EXIF那样的元数据标准。

在测试时,我注意到我可以使用bash找到我的视频日期:

$ head -c 1600 DSC_7643.AVI | strings
AVI LIST&
hdrlavih8
LISTt
...
NIKON
nctgr
NIKON CORPORATION
NIKON D90
A1.00
 B1.00
2012:10:30 09:38:16
2012:10:30 09:38:16

如果我有这个列表,我可以迭代它寻找可解析的日期并做出相当不错的猜测。

man的{​​{1}}页说:“在对象或其他二进制文件中查找可打印的字符串”。不幸的是,这是一个非常难以在Python中搜索类似内容的描述,而且我不知道它正在做什么来实现它的结果。是否有可以执行类似操作的Python实用程序或库?

1 个答案:

答案 0 :(得分:0)

不是搜索strings的Python替代品,只需调用实际 strings

>>> lst=subprocess.check_output(('strings', 'DSC_7643.AVI')).split('\n')

AVI文件的appears 有一个标准的元数据编码。 GNU计划extract声称可以做你想做的事:

>>> lst=subprocess.check_output(('extract', 'DSC_7643.AVI')).split('\n')

此外,似乎有an API用于提取元数据。它甚至有a Python binding