从二进制数据中获取文件路径

时间:2014-01-30 13:42:19

标签: python file openerp

是否可以从二进制数据中获取文件的路径?

我只有来自阅读文件的二进制数据,但没有文件路径信息。

二进制数据是否具有路径信息?如果是,那我怎么能得到它。

我需要使用python xlrd lib读取xlsx文件,这需要文件路径, 但我只有二进制数据。

有人能说清楚吗?

4 个答案:

答案 0 :(得分:3)

我之前做过这样的事,

def read_file(self, cr, uid, ids, context=None):
    if not context: context = {}
    rec = self.browse(cr, uid, ids[0], context)
    file_path = tempfile.gettempdir()+'/file.xlsx'
    data = rec.file
    f = open(file_path,'wb')
    f.write(data.decode('base64'))
    f.close()
    wb = xlrd.open_workbook(file_path)
    ....

然后你可以完成你的过程。

答案 1 :(得分:1)

通常,无法从其内容中检索文件的路径。可能存在可能的文件格式,但在一般情况下没有办法。

但是,如果您只需要文件路径将文件提供给程序的其他部分,则还有另一种方法:只需将二进制数据转储到任何文件(或临时文件)中,并使用该文件的路径。

答案 2 :(得分:0)

如果您从流中获取二进制数据,则获取文件路径的方式。

如果您考虑一下,数据也可能来自stdin或通过网络套接字,因此没有文件路径与之关联。

一种可能的方法是操纵程序以附加文件路径信息和二进制流。如果您可以发布程序代码,我们可以在此方法中提供更多帮助。

答案 3 :(得分:0)

我不认为你做得对。如果你的数据库中有二进制数据,那么使用python StringIO包创建一个缓冲区,然后将二进制文件加载到缓冲区。然后做你想做的事