2016-10-21 5 views
0

여러분,파일 조작 Python 2.7

여기 파일을 조작하는 데 어려움이 있습니다.

목표 : 폴더에서 파일을 복사하고 소스에서 파일을 복사해야하는 스크립트를 개발 중입니다.이 스크립트는 생성 할 달 수를 사용자가 읽습니다. 이 스크립트는 2017 년에 문자열을 .txt 파일로 변경해야하는 경우 생성 할 달 수와 동일한 파일을 복제합니다.

파일 내의

원래 문자열 : ANO 크리에이터 DO ESTUDO 2016 문자열이 변경 될 수 있습니다 : ANO 크리에이터 DO ESTUDO PS 2017

: 파일이 변경 될 원래하지만 사본

아니다 txt 파일에서 행을 변경할 수 있습니까? 이 문자열 소스를 삭제의 일부가 발견 된 경우

읽기 프로그램 소스 파일 및 문자열을 수정 배열 내에서 문자열의 일부를 식별하는 배열 에 재생 :

내가 필요한 것 파일을 만들고 같은 이름으로 다른 파일을 작성하거나 소스 파일 내의 문자열 (행 단위의 단어)을 변경하십시오. 이 작동하지 않는

FILENAME_NEWAVE = Path of the source file 
STRING_DGER = String to be searched 
FILE_DATE = Year 

, 당신은 내가이 작동 확신 소스 파일

def find_word_in_file_dger(FILENAME_NEWAVE, STRING_DGER, FILE_DATE): 
    f = open(FILENAME_NEWAVE, "r+") 
    file_array = f.readlines() 
    for i in file_array: 
     if i.find(STRING_DGER.encode('utf-8')): 
      f.write(i) 
     else: 
      print ("TO LENDO O ARRAY") 
      if FILE_DATE == "2016": 
       continue 
      else: 
       i.replace(STRING_DGER, "ANO INICIO DO ESTUDO " + FILE_DATE) 
       f.write(i) 
       print("TO ESCREVENDO A LINHA CORRETAMENTE MLK!! ") 
      return i 
    f.close() 
    return False 
+0

에 모습을 제공 제안 : '수입 re' '캐시 = None' '개방 ("file.txt를"을 " R ") F와 같은'' \t 캐시 = f.read()'' new_file의 re.sub = (STRING_DGER"ANO 크리에이터 DO ESTUDO {} "형식 (FILE_DATE.) 캐시)''경우 new_file : open ("newfile.txt", "w")을 f로 사용하여 ' \t'을 입력하십시오 : \t \t'f.write (new_file)' – Rollback

+0

작동! 하지만 파일에 있던 문자열이 여전히 거기에 있었는데, 파일에 "2017"문자열을 "2016"문자열을 삭제해야합니다. 2017 put 2018 ... –

+0

에 악센트가있는 경우이 오류 메시지가 나타납니다. "UnicodeDecodeError : 'ascii'코덱은 바이트 0xba를 위치 1355에서 디코딩 할 수 없습니다. 서수는 범위에 없습니다 (128)" –

답변

0

에 쓰고있다. UnicodeDecodeError에 대해서는 병 당신은 당신이 같은 somenthig으로 시도 할 수 this

import re 
cache = None 
with open("file.txt", "r") as f: 
    cache = f.read() 
new_file = re.sub("2017", "2018", cache) 
new_file = re.sub("2016", "2017", new_file) 
if new_file: 
    with open("newfile.txt", "w") as f: 
     f.write(new_file)