2013-04-01 2 views
2

저는 파이썬에서 새로운 것 같아서 간단한 작업을하고 싶습니다.하지만 조금 혼란 스럽거나 혼란 스럽습니다. 필자는 자동화하고 싶은 작업을 가지고 있으며, 현재 날짜를 작업을 위해 Excel 파일의 파일 이름에 추가합니다. 내가 리브레 오피스에 이름이 변경된 XLS 파일을 열 때XLS 파일의 이름이 Python으로 변경 되었습니까?

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) 

내가받은 경고는 다음과 같습니다

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 파일 형식입니다. 대신

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

+4

'.xlsx'를'.xls'로 바꾸는 것과 같은 일을하지 않았습니까? 차이점이 무엇인지 모르겠지만 그런 일을했을 때 이런 오류가 발생했습니다. – BenDundee

+0

이름을 변경하기 전에 원본 파일을 열 수 있습니까? – MattDMo

+0

"MJ_ProdMaster *"의 이름을 바꿉니다. 디렉토리에 MJ_ProdMaster로 시작하지만 .xls 파일이 아닌 파일이 있습니까? 그렇다면 .xls 확장자를 추가했으나 유효하지 않습니다. – tdelaney

답변

3

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

이 이전 접미사를 유지

을 시도하고 다수의 파일 이름에 . 문자 결함 허용됩니다.

2

사용자 BenDundee가 실수로 XLSX 파일의 이름을 XLS로 변경했는데 내 얼굴 앞에 무엇이 있는지 알 수 없었습니다.

+0

좋은 해결 방법은 아래 내 대답을 참조하십시오 ... – MattDMo

+0

했어요! 내가 스크립트에 유용한 추가 되었기 때문에 내가 upvote 의미 :) – SMT

+0

나는이 응답을 upvote거야 :) – BenDundee

관련 문제