>

이 파이썬 코드가 있습니다 :

import os, re
def clnFile(file):
    inputFile = open(file, 'r')
    filename = file + '.tmp'
    outputFile = open(filename, 'w')
    code = inputFile.read()
    pattern = re.compile('\n\t')
    code = pattern.sub('\n', code)
    outputFile.write(code)
    inputFile.close()
    outputFile.close()
    os.remove(file)
    os.rename(filename, file)

파일의 내용을 변경해야합니다. 내 알고리즘은 다음과 같습니다.

<올>
  • 원본 파일 열기
  • 원본 임시 파일 열기
  • 원본 파일 내용을 문자열로 읽기
  • 문자열 변경
  • 문자열을 원본 임시 파일에 쓰기
  • 원본 파일 닫기
  • 임시 파일 닫기
  • 오래된 원본 파일 제거
  • 임시 파일 이름 바꾸기
  • 이 코드를 단순화하는 방법이 있어야합니다. 이제는 부피가 커지기 때문입니다. 누구든지 내가 그것을 조정하도록 도와 줄 수 있습니까?

    • 답변 # 1

      여기에서 다른 접근법을 사용할 수 있습니다 :

      <올>

      r+ 에서 파일 열기  모드에서는 잘림과 함께 파일을 읽고 쓸 수 있습니다.

      콘텐츠를 먼저 읽고 변수에 저장하십시오.

      file.seek(0) 를 사용하여 0 번째 위치로 다시 탐색 .

      file.truncate() 를 사용하여 파일 자르기 즉, 0 바이트로 자릅니다.

      이제 새로운 내용을 파일 객체에 씁니다.

      코드 :

      def clean_file(filename):
          with open(filename, 'r+') as f:
              content = f.read()
              f.seek(0)
              f.truncate()
              f.write(content.replace('\n\t', '\n'))
      
      

      다른 요점 :

      Python에서 밑줄이있는 변수 이름을 선호하십시오.

      with 를 사용하여 항상 파일 열기  파이썬 문장.

      file 변수 이름을 변경할 수 있습니다   filename 로  사용자에게 더 명확하게하기 위해, 그렇지 않으면 파일 객체가 파일 이름을 요구하는지 또는 파일 객체를 기대하는지 구별하기 어렵다.

      정규식을 사용하는 대신 간단히 str.replace 를 사용하십시오  방법.

      파일을 한 줄씩 수정하려면 fileinput 를 살펴보십시오.  모듈.

  • 이전 cygwin 절대 경로는 c - // cygdrive/c를 제공하고 상대 경로는 정상적으로 작동합니다
  • 다음 permissions - 내 조직의 추종자 수 - 링크드 인 api