2

我是 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 文件格式。

4

2 回答 2

3

代替

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

尝试

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

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

于 2013-04-01T20:54:22.560 回答
2

用户 BenDundee 正确地猜到了我不小心将 XLSX 文件重命名为 XLS 并且看不到我面前的内容。

于 2013-04-01T20:55:25.363 回答