我正在使用 openpyxl 模块,但现在发现它不支持 csv 格式。那么,如何区分传入的文件是.xlsx还是.csv格式
我认为最好的方法是以二进制模式检查文件内容的前四个字节,以检查类似 zip 的文件。
xlsx文件(和其他存档文件)将50 4B 03 04(十六进制)作为其“幻数” - 请参阅这篇维基百科文章以获取许多其他所谓“幻数”的列表。
在Python中,我们可以表示50 4B 03 04为b'PK\x03\x04',因此我们可以创建一个函数来加载文件,并读取前四个字节,并检查它们是否是这个幻数:
filename1 = "test.xlsx"
if is_xlsx(filename1):
print(filename1, "is an Excel file!")
# load it openpyxl
else:
print(filename1, "is an CSV file!")
# load it with csv
filename2 = "test.csv"
if is_xlsx(filename2):
print(filename2, "is an Excel file!")
# load it openpyxl
else:
print(filename2, "is an CSV file!")
# load it with csv
Run Code Online (Sandbox Code Playgroud)
输出(也许并不令人惊讶):
test.xlsx is an Excel file!
test.csv is an CSV file!
Run Code Online (Sandbox Code Playgroud)