10.1 파일

10.1.1 생성하기: open()

fout = open('oops.txt', 'wt')
print('Ooops, I created a file.', file=fout)
fout.close()

10.1.2 존재여부 확인하기: exists()

  • 파일 혹은 디렉터리가 실제로 존재하는지확인
    import os
    print(os.path.exists('oops.txt'))
    print(os.path.exists('./oops.txt'))
    print(os.path.exists('waffles'))
    print(os.path.exists('.'))
    print(os.path.exists('..'))
    

    True True False True True

    10.1.3 타입 확인하기: isfile()

  • 이름이 파일인지, 디렉터리인지, 또는 절대 경로 인지 확인.
    name = 'oops.txt'
    print(os.path.isfile(name))
    print(os.path.isdir(name))
    print(os.path.isdir('.'))
    print(os.path.isabs('name'))
    print(os.path.isabs('/big/fake/name'))
    print(os.path.isabs('big/fake/name/without/a/leading/slash'))
    

    True False True False True False

    10.1.4 복사하기: copy()

  • shutil 이라는 모듈에 들어 있다.
    import shutil
    shutil.copy('oops.txt', 'ohno.txt')
    

    ‘ohno.txt’

    10.1.5 이름 바꾸기: rename()

    os.rename('ohno.txt', 'ohwell.txt')
    

    10.1.6 연결하기: link(), symlink()

  • link()는 하드링크를 생성함.
  • symlink()는 심벌릭 링크를 생성함.
  • islink() 는 파일이 심벌릭 링크인지 확인.
    os.link('oops.txt', 'yikes.txt')
    os.path.isfile('yikes.txt')
    

    True

    os.path.islink('yikes.txt')
    

    False

    os.symlink('oops.txt', 'jeepers.txt')
    print(os.path.islink('jeepers.txt'))
    print(os.path.isfile('jeepers.txt'))
    

    True True

    10.1.7 퍼미션 바꾸기: chmod()

  • chmode()는 파일의 퍼미션을 변경한다.
  • 사용자에 대한 읽기, 쓰기, 실행 퍼미션이 있다.
  • 사용자가 속한 그룹과 나머지에 대한 퍼미션이 각각 존재한다.
  • 이 명령은 사용자, 그룹, 나머지 퍼미션을 묶어서 압축된 8진수의 값을 취한다.
    os.chmod('oops.txt', 0o400)
    
    import stat
    os.chmod('oops.txt', stat.S_IRUSR)
    

    10.1.8 오너십 바꾸기: chown()

  • 숫자로 된 사용자 아이디와 그룹아이디를 지정하여 파일의 소유자와 그룹에 대한 오너십을 바꿀 수 있다.
    uid = 5
    gid = 22
    os.chown('oops.txt', uid, gid)
    
PermissionError Traceback (most recent call last)
<ipython-input-25-ced2695989c0> in <module>()
1 uid = 5
2 gid = 22
----> 3 os.chown('oops.txt', uid, gid)

PermissionError: [Errno 1] Operation not permitted: 'oops.txt'

10.1.8 절대 경로 얻기: abspath()

os.path.abspath('oops.txt')

‘/home/sumin/projects/python/IntroducingPython/10. 시스템/oops.txt’

10.1.10 심벌릭 링크 경로 얻기 : realpath()

os.path.realpath('jeepers.txt')

‘/home/sumin/projects/python/IntroducingPython/10. 시스템/oops.txt’

10.1.11 삭제하기: remove()

os.remove('oops.txt')
os.path.exists('oops.txt')
FileNotFoundError Traceback (most recent call last)
<ipython-input-33-3d5c88398ac2> in <module>()
----> 1 os.remove('oops.txt')
2 os.path.exists('oops.txt')
FileNotFoundError: [Errno 2] No such file or directory: 'oops.txt'

Comments