簡體   English   中英

來自 pandas.DataFrame.to_excel 的文件類型是“Zip 存檔數據,至少要提取 v2.0”

[英]File type from pandas.DataFrame.to_excel is "Zip archive data, at least v2.0 to extract"

我注意到由pandas.DataFrame.to_excel生成的 Excel 文件的文件類型是Zip archive data, at least v2.0 to extract pandas.DataFrame.to_excel Zip archive data, at least v2.0 to extract . 請注意內容類型很好: content_type, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

在我的 Django 項目中,我基本上是在處理上傳的文件之前驗證文件類型,雖然pandas.DataFrame.to_excel生成的文件是一個有效的 Excel 文件,但由於文件類型為Zip archive data, at least v2.0 to extract ,驗證模塊拒絕了上傳的文件Zip archive data, at least v2.0 to extract ,而不是Microsoft Excel 2007+

請讓我知道如何繞過此驗證。

我用來復制的代碼(即,創建一個文件類型為Zip archive data, at least v2.0 to extract的 Excel 文件Zip archive data, at least v2.0 to extract )這個問題就在這里。

import pandas as pd
import os
import magic

uploaded_file_path = r'somepath'
path, filename = os.path.split(uploaded_file_path)
filename_without_extension = os.path.splitext(filename)
new_file_name = os.path.join(path, filename_without_extension[0]) + '_TESTING_BLAH_' + str(1) + '.xlsx'


df1 = pd.DataFrame([['a', 'b'], ['c', 'd']],
                   index=['row 1', 'row 2'],
                   columns=['col 1', 'col 2'])

df1.to_excel(new_file_name)

file_type = magic.from_file(new_file_name)
print(file_type)

懷疑該行為似乎與 Excel 文件的創建方式有關。 xlsx通過開源庫創建的文件有dffierent幻數則xlsx通過MS Excel中創建的文件。 可以在此處找到類似的問題。 默認的 dB libmagic使用顯然不能將這些文件識別為 Excel 文件。

該帖子還描述了一個可能的解決方案。 您可以將自定義定義添加到文件/etc/magic 並且有一個您可以復制和粘貼的文件似乎有效。

因此,將 這個msooxml文件的內容復制到您計算機上的文件/etc/magic 這樣做之后,這些文件在我的機器上被識別為 Excel 2007。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM