2013-04-01 44 views
2

我是Python的新手,我想完成一個簡單的任務,但我有點卡住/困惑。我只需要一個我想要自動化的任務,它將當前日期追加到Excel文件的文件名中以便工作。用Python重命名的XLS文件損壞?

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) 

當我在自由報辦公室開闢新更名爲XLS文件,我收到警告:

The file is corrupt and therefore cannot be opened. LibreOffice can try to repair the file.

The corruption could be the result of document manipulation or of structural document damage due to data transmission.

所以我的文件重命名顯然已經損壞它,即使表面上似乎重新命名文件正確。我不確定我是否已經損壞了它。次要的(但同樣重要的)問題是我的腳本應該做些什麼,因爲我顯然沒有成功完成重命名任務。

編輯:如果有任何其他信息,當我嘗試修復Libre Office內的文件時,錯誤讀取錯誤:未知或不支持的Excel文件格式。

+4

你確定你沒有做類似'.xlsx'到'.xls'嗎?我不確定它們之間有什麼不同,但是當我這樣做時,我遇到了類似的錯誤。 – BenDundee

+0

重命名之前,您可以打開原始文件嗎? – MattDMo

+0

您重命名爲「MJ_ProdMaster *」。目錄中是否有以MJ_ProdMaster開頭但不是.xls文件的文件?如果是這樣,你添加了.xls擴展名,但它是無效的。 – tdelaney

回答

3

而不是

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

嘗試

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

這將保持以往任何後綴,並且將容錯多個文件名.字符。

2

用戶BenDundee正確地猜到了我是不小心將XLSX文件重命名爲XLS,無法看到我面前的是什麼。

+0

看到我的答案在下面有一個很好的解決方法... – MattDMo

+0

我做到了!我的意思是upvote,因爲這是一個有益的補充腳本感謝:) – SMT

+0

我會upvote這個迴應:) – BenDundee