是否可以从二进制数据中获取文件的路径?
我只有来自阅读文件的二进制数据,但没有文件路径信息。
二进制数据是否具有路径信息?如果是,那我怎么能得到它。
我需要使用python xlrd lib读取xlsx文件,这需要文件路径, 但我只有二进制数据。
有人能说清楚吗?
答案 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包创建一个缓冲区,然后将二进制文件加载到缓冲区。然后做你想做的事