Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python xlrd-打开文件时的问题_Python_Excel_Xlrd - Fatal编程技术网

Python xlrd-打开文件时的问题

Python xlrd-打开文件时的问题,python,excel,xlrd,Python,Excel,Xlrd,我使用的是xlrd 0.9.4,我想验证我必须打开的文件是否有效 为此,我编写了以下代码: 其中,文件路径是我的文件路径 这工作正常,问题如下。首先,我有一个有效的.xls文件,所以脚本打印完成。现在,假设有效的.xls文件已重命名(也是扩展名),例如从test.xls重命名为test.txt 如果我运行脚本,我会得到相同的结果(完成) 相反,如果我使用“real”.txt文件(空的或带有一些文本),脚本将打印错误类型的文件 发生这种行为是因为文件的“结构”没有更改?我做错什么了吗?还有另一种类

我使用的是xlrd 0.9.4,我想验证我必须打开的文件是否有效

为此,我编写了以下代码:

其中,文件路径是我的文件路径

这工作正常,问题如下。首先,我有一个有效的.xls文件,所以脚本打印完成。现在,假设有效的.xls文件已重命名(也是扩展名),例如从test.xls重命名为test.txt

如果我运行脚本,我会得到相同的结果(完成)

相反,如果我使用“real”.txt文件(空的或带有一些文本),脚本将打印错误类型的文件

发生这种行为是因为文件的“结构”没有更改?我做错什么了吗?还有另一种类型的异常,我可以添加到中,除了分支


提前感谢

您可以在阅读之前查看如何对文件进行xlrd检查。在at第18-19行定义了一个«magic»字节。文件的第一个字节与第85行的字节序列进行比较。如果它不平等,例外情况就会上升。不涉及文件扩展名


可以找到不同文件类型的签名。

您可以看到如何在读取之前对文件进行xlrd检查。在at第18-19行定义了一个«magic»字节。文件的第一个字节与第85行的字节序列进行比较。如果它不平等,例外情况就会上升。不涉及文件扩展名


可以找到不同文件类型的签名。

您可以使用
如果file_path.endswith(.xls)或file_path.endswith(.xlsx)):
来测试扩展名。您所说的“有效”是什么意思?这种行为的确切含义不是您所期望的?对我来说完全有道理。文件的名称/扩展名与其内容无关。事实上-输入甚至可以是
StringIO
对象,因此甚至没有物理文件名。。。您正在询问库是否可以将数据作为有效工作簿进行处理,而上面的代码正是这样做的…@Ninjappy您是对的,现在我明白了。非常感谢。您可以使用
if file_path.endswith(“.xls”)或file_path.endswith(“.xlsx”):
来测试扩展名。您所说的“有效”是什么意思?这种行为的确切含义不是您所期望的?对我来说完全有道理。文件的名称/扩展名与其内容无关。事实上-输入甚至可以是
StringIO
对象,因此甚至没有物理文件名。。。您正在询问库是否可以将数据作为有效工作簿进行处理,而上面的代码正是这样做的…@Ninjappy您是对的,现在我明白了。非常感谢。非常感谢你!非常感谢你!
try:
    book = xlrd.open_workbook(file_path)
    print "Done"
except XLRDError:
    print "Wrong type of file."