Python 파일 작업 에 대한 상세 한 설명 및 인 스 턴 스

6741 단어 Python파일 조작
Python 파일 작업 에 대한 상세 한 설명 및 인 스 턴 스
파일 작업
1.파일 작업 절차
  • 파일 을 열 고 파일 핸들 을 가 져 와 변 수 를 부여 합 니 다
  • 핸들 을 통 해 파일 을 조작 합 니 다
  • 파일 닫 기
  • 현재 파일 은 다음 과 같 습 니 다.
    
           。
         ,   。
           。
       ,     。
         ,     ,   。
           。
       ,     。
    
    f = open('   ') #    
    data=f.read()#      
    f.close() #    
    
    메모:if in the win,hello 파일 은 utf 8 로 저 장 됩 니 다.파일 을 열 때 open 함 수 는 운영 체제 로 열 린 파일 입 니 다.win 운영 체 제 는 기본적으로 gbk 인 코딩 이기 때문에 직접 열 면 어 지 럽 습 니 다.f=open('hello',encoding='utf 8')이 필요 합 니 다.hello 파일 은 gbk 로 저 장 된 것 이 라면 직접 열 면 됩 니 다.
    2.파일 열기 모드
    Character Meaning
    
    'r'    open for reading (default)
    'w'    open for writing, truncating the file first
    'x'    create a new file and open it for writing
    'a'    open for writing, appending to the end of the file if it exists
    'b'    binary mode
    't'    text mode (default)
    '+'    open a disk file for updating (reading and writing)
    'U'    universal newline mode (deprecated)
    
    먼저 세 가지 가장 기본 적 인 모델 을 소개 한다.
    
    # f = open('   2','w') #    
    # f = open('   2','a') #    
    # f.write('   1
    ') # f.write(' 2
    ') # f.write(' !3')
    3.문서 의 구체 적 인 조작
    
    f = open('   ') #    
    # data1=f.read()#      
    # data2=f.read()#      
    #
    # print(data1)
    # print('...',data2)
    # data=f.read(5)#      
    
    # data=f.readline()
    # data=f.readline()
    # print(f.__iter__().__next__())
    # for i in range(5):
    #   print(f.readline())
    
    # data=f.readlines()
    
    # for line in f.readlines():
    #   print(line)
    
    
    #     :     ,   3     :'end 3'
    # for index,line in enumerate(f.readlines()):
    #   if index==2:
    #     line=''.join([line.strip(),'end 3'])
    #   print(line.strip())
    
    #  :            
    # count=0
    # for line in f:
    #   if count==3:
    #     line=''.join([line.strip(),'end 3'])
    #   print(line.strip())
    #   count+=1
    
    # print(f.tell())
    # print(f.readline())
    # print(f.tell())#tell           ,       ,   read()   .
    # print(f.read(5))#         
    # print(f.tell())
    # f.seek(0)
    # print(f.read(6))#read              ,        ,read(6),     6     
    
    #terminal   :
    f = open('   2','w')
    # f.write('hello 
    ') # f.flush() # f.write('world') # : # import time,sys # for i in range(30): # sys.stdout.write("*") # # sys.stdout.flush() # time.sleep(0.1) # f = open(' 2','w') # f.truncate()# # f.truncate(5)# # print(f.isatty()) # print(f.seekable()) # print(f.readable()) f.close() #
    다음 에 우 리 는 파일 모드 를 계속 확장 합 니 다:
    
    # f = open('   2','w') #    
    # f = open('   2','a') #    
    # f.write('   1
    ') # f.write(' 2
    ') # f.write(' !3') # f.close() #r+,w+ # f = open(' 2','r+') # # print(f.read(5))# # f.write('hello') # print('------') # print(f.read()) # f = open(' 2','w+') # # print(f.read(5))# , # f.write('hello alex') # print(f.read())# read # f.seek(0) # print(f.read()) #w+ a+ # ok, , :'hello !' # , ? , print, !!! # f = open(' 2','r+') # # f.readline() # f.readline() # f.readline() # print(f.tell()) # f.write('hello ') # f.close() # , ! ? # f_read = open(' ','r') # # f_write = open(' _back','w') # # count=0 # for line in f_read: # if count==3: # f_write.write('hello,
    ') # # else: # f_write.write(line) # another way: # if count==3: # # line='hello, 2
    ' # f_write.write(line) # count+=1 # # # f = open(' 2','wb') # # # f = open(' 2','wb') # # f.write('hello alvin!'.encode())#b'hello alvin!' , , 010101
    주의 1:py2 든 py3 든 r+모드 에서 같은 바이트 로 바 꿀 수 있 지만 의미 가 없습니다! 
    주의 2:어떤 학생 은 여기 서 readlines 로 내용 목록 을 얻 은 다음 에 색인 을 통 해 해당 내용 을 수정 하고 마지막 으로 목록 을 다시 작성 합 니 다.
    이런 사고방식 에는 매우 큰 문제 가 하나 있다.데이터 가 매우 크 면 너의 메모 리 는 참 을 수 없 을 것 이 고,우리 의 방식 은 교체 기 를 통 해 이 과정 을 최적화 할 수 있다. 
    rb 모드 및 seek
    py2 에서:
    
    #       .
    
    f = open('test','r',) #         
    
    f.read(3)
    
    # f.seek(3)
    # print f.read(3) #  
    
    # f.seek(3,1)
    # print f.read(3) #  
    
    # f.seek(-4,2)
    # print f.read(3) #  
    
    
    py3 에서:
    
    # test: 
           .
    
    f = open('test','rb',) #         
    
    f.read(3)
    
    # f.seek(3)
    # print(f.read(3)) # b'\xe5\xa4\x9c'
    
    # f.seek(3,1)
    # print(f.read(3)) # b'\xe5\xaf\x92'
    
    # f.seek(-4,2)
    # print(f.read(3))  # b'\xe9\xb8\xa3'
    
    #  :  py3 ,         ,      ,  r  ,   f.read         decode 
    #   unicode  ;               ,       ,      ,       decode
    #       bytes   ,       rb  .
    
    #    py3 ,          bytes unicode,  seek   , py2 py3         seek,
    #     py3         f    rb,      .
    
    #  :              rb  ,  decode          .
    
    
    4.with 구문
    파일 을 열 고 닫 는 것 을 잊 지 않도록 컨 텍스트 를 관리 할 수 있 습 니 다.즉,:
    
    with open('log','r') as f:
        pass
    이러한 방식 으로 with 코드 블록 이 실 행 될 때 내부 에서 파일 자원 을 자동 으로 닫 고 방출 합 니 다.
    Python 2.7 이후 with 는 여러 파일 의 컨 텍스트 를 동시에 관리 하 는 것 을 지원 합 니 다.즉,:
    
    with open('log1') as obj1, open('log2') as obj2:
      pass2
    궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기