python 학습카드 8.8

13141 단어

1. 파일 및 파일 시스템


# 파일 열기
  • open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True) Open file and return a stream. Raise OSError upon failure. file: 필수, 파일 경로 (상대적 또는 절대 경로).mode: 선택할 수 있습니다. 파일 열기 모드buffering: 버퍼 인코딩 설정: 일반적으로utf8 errors: 오류 단계 newline: 줄 바꾸기 기호를 구분하는 흔한 모드는 다음과 같습니다

  • 열기 모드
    작업 수행
    ‘r’
    읽기 전용으로 파일을 엽니다.파일의 포인터는 파일의 시작 부분에 놓입니다.기본 모드입니다.
    ‘w’
    쓰기 전용으로 파일을 엽니다.파일이 이미 있으면 파일을 열고 처음부터 편집합니다.기존 컨텐트가 삭제됩니다.파일이 없으면 새 파일을 만듭니다.
    ‘x’
    쓰기 모드, 새 파일이 존재하면 오류가 발생합니다.
    ‘a’
    추가 모드, 추가에 사용할 파일을 엽니다.파일이 이미 존재하면 파일 포인터가 파일의 끝에 놓입니다.즉, 새로운 내용은 기존 내용에 기록될 것이다.이 파일이 존재하지 않으면 쓰기 위해 새 파일을 만듭니다.
    ‘b’
    바이너리 모드로 파일을 엽니다.일반적으로 그림과 같은 비텍스트 파일에 사용됩니다.
    ‘t’
    텍스트 모드로 열기(기본값).일반적으로 텍스트 파일에 사용됩니다(예: txt.
    ‘+’
    읽기 및 쓰기 가능 모드(다른 모드에 추가 가능)

    파일 객체 및 방법

  • fileObject.close () 는 열려 있는 파일을 닫는 데 사용됩니다.닫힌 파일은 더 이상 읽기와 쓰기를 할 수 없습니다. 그렇지 않으면 ValueError 오류가 발생합니다
  • fileObject.read ([size]) 는 파일에서 지정한 문자 수를 읽는 데 사용되며, 지정되지 않거나 음이면 모든 것을 읽습니다
  • fileObject.readline () 은 ""문자를 포함하여 전체 줄을 읽습니다
  • fileObject.readlines () 는 모든 행을 읽고 목록을 되돌려줍니다. 이 목록은 Python의 for...in...구조로 처리됩니다
  • fileObject.tell () 은 파일의 현재 위치, 즉 파일 포인터의 현재 위치를 되돌려줍니다
  • fileObject.seek (offset [, whence]) 는 파일을 이동하여 지정한 위치로 포인터를 읽는 데 사용됩니다.offset: 시작하는 편이량, 즉 이동해야 하는 바이트 수를 나타냅니다. 음수라면 꼴찌부터 시작합니다.whence: 선택 사항입니다. 기본값은 0입니다.오프셋에서 오프셋을 시작할 위치를 나타내는 매개 변수를 정의합니다.0은 파일의 시작 부분부터 계산하고 1은 현재 위치부터 계산하며 2는 파일의 끝 부분부터 계산합니다
  • fileObject.쓰기 (str) 는 파일에 지정한 문자열을 쓰는 데 사용되며, 쓰기 문자의 길이를 되돌려줍니다
  • 파일이 닫히기 전이나 버퍼가 새로 고쳐지기 전에 문자열 내용이 버퍼에 저장됩니다. 이 때 파일에 기록된 내용을 볼 수 없습니다..

  • 만약 파일 열기 모드가 b를 가지고 있다면, 파일 내용을 쓸 때str(인자)는encode 방법으로bytes 형식으로 바꾸어야 합니다. 그렇지 않으면 오류가 발생합니다. TypeError: a bytes-like object is required, not'str'입니다.
  • fileObject.writelines (sequence) 는 파일에 시퀀스 문자열 목록을 기록합니다. 줄을 바꾸려면 줄마다 줄 바꾸기를 추가해야 합니다

  • 간결한 with 문장


    키워드 with 문장은 파일 같은 대상이 사용한 후에 반드시 그 정리 방법을 정확하게 집행할 수 있도록 보장할 수 있다.
    try:
        f = open('myfile.txt', 'w')
        for line in f:
            print(line)
    except OSError as error:
        print(' !%s' % str(error))
    finally:
        f.close()
    
    #  !not readable
    

    OS 모듈에서 파일/디렉토리에 자주 사용되는 함수

  • os.getcwd () 는 현재 작업 디렉터리를 되돌려줍니다
  • os.chdir (path) 는 현재 작업 디렉터리를 지정한 경로로 바꾸는 데 사용됩니다
  • import os
    
    path = 'C:\\'
    print("  : %s" % os.getcwd())
    #   : C:\Users\Administrator\PycharmProjects\untitled1
    os.chdir(path)
    print("  : %s" % os.getcwd())
    #   : C:\
    
  • listdir (path='.') path가 지정한 폴더에 포함된 파일이나 폴더 이름의 목록을 되돌려줍니다
  • os.mkdir (path) 는 단일 디렉터리를 만듭니다. 이 디렉터리에 이상이 있으면..
  • os.makedirs (path) 는 다중 디렉터리를 만드는 데 사용됩니다. 이 디렉터리에 이상이 발생하면..
  • os.remove (path) 는 지정한 경로의 파일을 삭제하는 데 사용됩니다.지정한 경로가 디렉토리인 경우 OSError가 제거됩니다
  • os.rmdir (path) 는 단일 디렉터리를 삭제하는 데 사용됩니다.이 폴더가 비어 있는 경우에만 가능합니다. 그렇지 않으면 OSError를 던져라..
  • os.removedirs (path) 는 디렉터리를 차례로 삭제하고, 하위 디렉터리에서 부모 디렉터리까지 층층이 삭제하려고 시도하며, 디렉터리가 비어 있지 않으면 이상을 던집니다
  • os.rename(src, dst) 방법은 파일이나 디렉터리를 명명하는 데 사용됩니다. src에서 dst까지, dst가 존재하는 디렉터리라면 OSError를 던집니다
  • os.시스템 (command) 실행 시스템의 셸 명령 (문자열을 명령으로 변환)
  • os.curdir는 현재 디렉터리 (.) 를 가리킨다
  • os.pardir는 이전 디렉터리 (...) 를 가리킨다
  • os.sep는 운영체제별 경로 구분자를 출력합니다(win 아래는\, Linux 아래는/)
  • os.linesep 현재 플랫폼에서 사용하는 줄 끝 문자(win 아래는\r, Linux 아래)는 다음과 같습니다
  • os.name은 현재 사용 중인 운영체제를 가리킨다('mac','nt'포함)
  • os.path.basename (path) 디렉터리 경로를 제거하고 파일 이름을 단독으로 되돌려줍니다
  • os.path.dirname (path) 파일 이름을 지우고 디렉터리 경로를 단독으로 되돌려줍니다
  • os.path.join(path1[,path2[,...])은path1,path2 각 부분을 하나의 경로명으로 조합합니다
  • os.path.split(path)는 파일 이름과 경로를 분할하고 (f_path, f_name) 메타그룹을 되돌려줍니다.디렉터리를 완전히 사용하면 마지막 디렉터리를 파일 이름으로 분리하고 파일이나 디렉터리가 존재하는지 판단하지 않습니다
  • os.path.splitext(path)는 파일 이름과 확장자를 분리하고 (f_path, f_name) 메타그룹을 되돌려줍니다
  • os.path.getsize (file) 는 지정한 파일 크기를 되돌려줍니다. 단위는 바이트입니다..
  • os.path.getatime (file) 은 지정한 파일의 최근 접근 시간을 되돌려줍니다
  • os.path.getctime (file) 는 지정한 파일의 생성 시간을 되돌려줍니다
  • os.path.getmtime (file) 은 지정한 파일의 최신 수정 시간을 되돌려줍니다
  • 부동점형 초수,time 모듈의 gmtime () 또는localtime () 함수로 환산할 수 있습니다
  • os.path.exists(path)는 지정한 경로 (디렉터리 또는 파일) 의 존재 여부를 판단합니다
  • os.path.isabs(path)는 지정한 경로가 절대 경로인지 판단합니다
  • os.path.isdir (path) 는 지정한 경로가 존재하고 디렉터리인지 판단합니다
  • os.path.isfile (path) 은 지정한 경로가 존재하고 파일인지 판단합니다
  • os.path.islink (path) 는 지정한 경로가 존재하고 기호 링크인지 판단합니다
  • os.path.ismount (path) 는 지정한 경로가 존재하고 걸림점인지 판단합니다
  • os.path.samefile(path1,path2)은path1과path2 두 경로가 같은 파일을 가리키는지 판단합니다

  • 서열화와 반서열화


    Python의pickle 모듈은 기본적인 데이터 시퀀스와 반서열화를 실현했다.
    pickle 모듈의 서열화 작업을 통해 프로그램에서 실행되는 대상 정보를 파일에 저장하고 영구적으로 저장할 수 있습니다.pickle 모듈의 반서열화 작업을 통해 우리는 파일에서 이전 프로그램에 저장된 대상을 만들 수 있습니다.pickle 모듈에서 가장 자주 사용하는 함수는 다음과 같습니다.
    pickle.dump (obj,file,[,protocol]) 는 열려 있는 파일에 obj 대상을 서열화합니다.
    obj: 서열화된 obj 대상을 원합니다.file: 파일 이름입니다.프로토콜: 서열화된 프로토콜입니다.이 항목이 생략되면 기본값은 0입니다.음수 또는 HIGHEST인 경우 _PROTOCOL은 가장 높은 프로토콜 버전을 사용합니다.pickle.load (file) 는 파일의 대상을 정렬하여 읽습니다.
    file: 파일 이름입니다.
    import pickle
    
    dataList = [[1, 1, 'yes'],
                [1, 1, 'yes'],
                [1, 0, 'no'],
                [0, 1, 'no'],
                [0, 1, 'no']]
    dataDic = {
         0: [1, 2, 3, 4],
               1: ('a', 'b'),
               2: {
         'c': 'yes', 'd': 'no'}}
    
    #  dump() 
    fw = open(r'.\dataFile.pkl', 'wb')
    
    # Pickle the list using the highest protocol available.
    pickle.dump(dataList, fw, -1)
    
    # Pickle dictionary using protocol 0.
    pickle.dump(dataDic, fw)
    fw.close()
    
    #  load() 
    fr = open('dataFile.pkl', 'rb')
    data1 = pickle.load(fr)
    print(data1)
    data2 = pickle.load(fr)
    print(data2)
    fr.close()
    
    # [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]
    # {0: [1, 2, 3, 4], 1: ('a', 'b'), 2: {'c': 'yes', 'd': 'no'}}
    

    좋은 웹페이지 즐겨찾기