【问题标题】:Error opening text file saved with .xls extension in python在 python 中打开以 .xls 扩展名保存的文本文件时出错
【发布时间】:2017-04-17 20:00:39
【问题描述】:

我正在使用 labview 创建和保存实验数据。 Labview 本身会创建一个文本文件,但会自动以 .xls 扩展名保存它(单词 1997-2003——这是一个从未更改过的旧设置,因为它从未损坏过)。每当我打开其中一个数据文件时,excel 都会显示:

“您尝试打开的文件 'name.ext' 的格式与文件扩展名指定的格式不同。在打开文件之前,请确认该文件没有损坏并且来自受信任的来源。您是否现在要打开文件吗?”

我正在生成大量数据,因此我想使用 python 对其进行排序并对目录中的文件进行一些快速分析。

问题在于 python 不喜欢它是一个以 .xls 扩展名保存的文本文件。它可以很好地循环浏览目录以获取文件名,但是当我实际尝试打开文件或对其执行任何操作时,我会在附加的图像中得到错误。如果我将扩展名更改为 .xls、.xlsx 或根本不对其进行任何操作并让它尝试打开原始文件名,就会发生这种情况。

error message

我确实有数百个这样的 .xls 文件。我知道我可以通过,在 excel 中打开每个文件并手动保存为真正的 excel 文件,但这需要几个小时。有人可以帮我解决python中的这个错误吗?

Dropbox Data File set

*更新。 Matlab 在尝试使用 xlsread 读取其中一个文件时说:

使用 xlsread 时出错(第 251 行) 文件 C:\Users\zane\Documents\Research Projects\PneuFish Project\Data\2016 年 11 月 28 日 ATI Data\ATI_Data_2016Y_11M_28D_16h_36m_01s.xls 不是 Microsoft Excel 格式。

谢谢!

【问题讨论】:

    标签: python excel text labview


    【解决方案1】:

    您可以使用模块xlrd

    import xlrd
    import csv
    
    def csv_from_excel():
    
       wb = xlrd.open_workbook('your_workbook.xls')
       sh = wb.sheet_by_name('Sheet1')
       your_csv_file = open('your_csv_file.csv', 'wb')
       wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
    
       for rownum in xrange(sh.nrows):
            wr.writerow(sh.row_values(rownum))
    
       your_csv_file.close()
    

    取自This Post

    这将从.xls 转换为.csv,这很容易用Python 操作。

    【讨论】:

    • 不起作用。在[2]中:导入转换In [3]: convert.csv_from_excel() --------------------------------------------------------------------------- FileNotFoundError ----> 1 convert.csv_from_excel() C:\path\convert.py in csv_from_excel() 17 def csv_from_excel(): 18 ---> 19 wb = xlrd.open_workbook('ATI_Data_2016Y_11M_28D_16h_36m_01s.xls') 20 sh = wb.sheet_by_name('Sheet1') 21 your_csv_file = open('your_csv_file.csv', 'wb') FileNotFoundError: [Errno 2] No such file or directory: 'ATI_Data_2016Y_11M_28D_16h_36m_01s.xls'
    【解决方案2】:

    您已经说过该文件是一个文本文件,所以不要告诉 Python 它是一个 Excel 文件。只需使用 Python 的 open 并将其作为文本读取,然后随心所欲地使用它。 open 不关心文件的扩展名。

    我猜该格式实际上是制表符分隔的。从内存中,早期版本的 Excel 会毫无怨言地读取带有 .xls 扩展名的制表符分隔的文本文件,而 csv 文件总是会弹出文本导入向导,因此如果从不支持编写真正的 Excel 文件的程序。

    如果您希望 LabVIEW 代码以后编写真正的 Excel 文件,Write to Measurement File express VI 可以选择以 xlsx 格式编写。我不确定哪个版本的 LabVIEW 最先引入了这个,但它已经存在了几年了。

    【讨论】:

    • 什么确切的 Python 命令给出了这个错误,您是否验证了文件/目录确实存在,并且如果您尝试写入它是可写的?
    猜你喜欢
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多