在Python中重命名的XLS文件损坏了?

时间:2013-04-01 20:42:04

标签: python xls file-rename

我是Python的新手,我想完成一项简单的任务,但我有点困惑/困惑。我只是有一个我想要自动化的任务,它将当前日期附加到excel文件的文件名中以便工作。

import os
import sys
import datetime


src_dir = os.path.normpath('\\\\EXAMPLE_SERVER_NAME\\x$\\Clients\\Public\\')
dir = os.listdir(src_dir)
now = datetime.datetime.now()
year = now.year
month = now.month
day = now.day
date = str(month) + '.' + str(day) + '.' + str(year)
new_filename = ''

for filename in dir:
    if filename.startswith('MJ_ProdMaster'):
        str_index = filename.index('.',0,len(filename))
        new_filename = filename[:(str_index)] + ' ' + str(date) + '.xls' 
        new_filename = os.path.join(src_dir, new_filename)
        old_filename = os.path.join(src_dir, filename)
        os.rename(old_filename,new_filename)

当我在Libre Office中打开刚刚重命名的XLS文件时,我收到的警告是:

  

文件已损坏,因此无法打开。 LibreOffice可以尝试修复该文件。

     

腐败可能是文档操作或数据传输导致的结构文档损坏的结果。

所以我对文件的重命名已经明显损坏了它,即使从表面上看它似乎正确地重命名文件。我不确定我是如何破坏它的。一个次要(但同样重要)的问题是我应该在我的脚本中做些什么,因为我显然没有成功完成重命名任务。

编辑:如果是任何其他信息,当我尝试修复Libre Office中的文件时出现错误读取错误:未知或不支持的Excel文件格式。

2 个答案:

答案 0 :(得分:3)

而不是

new_filename = filename[:(str_index)] + ' ' + str(date) + '.xls'

new_filename = filename[:(str_index)] + ' ' + str(date) + filename[(str_index):]

这将保留以前的所有后缀,并且对文件名中的多个.字符具有容错能力。

答案 1 :(得分:2)

用户BenDundee正确猜到我不小心将XLSX文件重命名为XLS,无法看到我面前的内容。