import os
print(os.listdir('.')) # 현재 디렉토리의 파일 목록 얻기
print()
print(os.listdir('../')) # 현재 디렉토리의 부모 디렉토리의 파일 목록 얻기
['assignment2019', 'python10.ipynb', 'python09.ipynb', 'mymath.py', 'assignment-5.ipynb', 'python12.ipynb', 'removeme.txt', 'python16.ipynb', 'supplement-2016-09.ipynb', 'assignment-1.ipynb', 'assignment-3.ipynb', 'python14.ipynb', 'Untitled.ipynb', 'assignment-4.ipynb', 't1.txt', 'python13.ipynb', 'python11.ipynb', 'python08.ipynb', 'pickle.txt', 'assignment-2.ipynb', 'python15.ipynb', '__pycache__', 'python17.ipynb', 'Speech', 'python02.ipynb', 't.txt', 'python19.ipynb', 'module_test.py', 'python04.ipynb', 'python20.ipynb', 'prname.ipynb', 'pickle2.txt', 'python22.ipynb', 'python06.ipynb', 'readme.txt', '.ipynb_checkpoints', 'python18.ipynb', 'python01.ipynb', 'python03.ipynb', 'python23.ipynb', 'output.txt', 'python07.ipynb', 'python05.ipynb', 'prname.py', 'python21.ipynb'] ['python10.ipynb', 'music', 'python09.ipynb', 'mymath.py', 'assignment-5.ipynb', 'python12.ipynb', 'Untitled1.ipynb', 'python16.ipynb', 'supplement-2016-09.ipynb', 'assignment-1.ipynb', 'assignment-3.ipynb', 'Untitled3.ipynb', 'python14.ipynb', 'images', 'assignment-4.ipynb', 'python13.ipynb', 'python11.ipynb', 'python08.ipynb', 'The Python Challenge.webloc', 'assignment-2.ipynb', 'turtle_method-3.png', 'turtle_method-2.png', 'python15.ipynb', 'Untitled2.ipynb', 'python3.6', 'python17.ipynb', 'turtle_method-1.png', 'Speech', 'aaa', 'python02.ipynb', 'README.md', 'python19.ipynb', '.gitignore', 'module_test.py', 'python04.ipynb', 'python20.ipynb', 'python22.ipynb', 'files', 'python06.ipynb', 'supplement.ipynb', '.ipynb_checkpoints', 'python18.ipynb', 'python01.ipynb', 'python03.ipynb', '.git', 'python23.ipynb', '과제3-모범답안.ipynb', 'python07.ipynb', 'python05.ipynb', 'turtle_example.png', '범이의 데이터 아키텍처 -- [Python] [개념을 잡아주는 프로그래밍 정석] 4.8 연습문제.webloc', 'mymath.ipynb', 'python21.ipynb']
import os
def filetype(fpath):
print(fpath, ':', end="")
if os.path.isfile(fpath):
print('Regular file')
if os.path.isdir(fpath):
print('Directory')
if os.path.islink(fpath):
print('Symbolic link')
flist = os.listdir('.')
for fname in flist:
filetype(fname)
assignment2019 :Directory python10.ipynb :Regular file python09.ipynb :Regular file mymath.py :Regular file assignment-5.ipynb :Regular file python12.ipynb :Regular file removeme.txt :Regular file python16.ipynb :Regular file supplement-2016-09.ipynb :Regular file assignment-1.ipynb :Regular file assignment-3.ipynb :Regular file python14.ipynb :Regular file Untitled.ipynb :Regular file assignment-4.ipynb :Regular file t1.txt :Regular file python13.ipynb :Regular file python11.ipynb :Regular file python08.ipynb :Regular file pickle.txt :Regular file assignment-2.ipynb :Regular file python15.ipynb :Regular file __pycache__ :Directory python17.ipynb :Regular file Speech :Directory python02.ipynb :Regular file t.txt :Regular file python19.ipynb :Regular file module_test.py :Regular file python04.ipynb :Regular file python20.ipynb :Regular file prname.ipynb :Regular file pickle2.txt :Regular file python22.ipynb :Regular file python06.ipynb :Regular file readme.txt :Regular file .ipynb_checkpoints :Directory python18.ipynb :Regular file python01.ipynb :Regular file python03.ipynb :Regular file python23.ipynb :Regular file output.txt :Regular file python07.ipynb :Regular file python05.ipynb :Regular file prname.py :Regular file python21.ipynb :Regular file
import os
def fileaccess(fpath):
print(fpath, ':', end="")
if os.access(fpath, os.F_OK):
print('Exists - ', end="")
else:
return
if os.access(fpath, os.R_OK):
print('R', end="")
if os.access(fpath, os.W_OK):
print('W', end="")
if os.access(fpath, os.X_OK):
print('X', end="")
print()
flist = os.listdir('.')
for fname in flist:
fileaccess(fname)
assignment2019 :Exists - RWX python10.ipynb :Exists - RW python09.ipynb :Exists - RW mymath.py :Exists - RW assignment-5.ipynb :Exists - RW python12.ipynb :Exists - RW removeme.txt :Exists - RW python16.ipynb :Exists - RW supplement-2016-09.ipynb :Exists - RW assignment-1.ipynb :Exists - RW assignment-3.ipynb :Exists - RW python14.ipynb :Exists - RW Untitled.ipynb :Exists - RW assignment-4.ipynb :Exists - RW t1.txt :Exists - RW python13.ipynb :Exists - RW python11.ipynb :Exists - RW python08.ipynb :Exists - RW pickle.txt :Exists - RW assignment-2.ipynb :Exists - RW python15.ipynb :Exists - RW __pycache__ :Exists - RWX python17.ipynb :Exists - RW Speech :Exists - RWX python02.ipynb :Exists - RW t.txt :Exists - RW python19.ipynb :Exists - RW module_test.py :Exists - RW python04.ipynb :Exists - RW python20.ipynb :Exists - RW prname.ipynb :Exists - RW pickle2.txt :Exists - RW python22.ipynb :Exists - RW python06.ipynb :Exists - RW readme.txt :Exists - RW .ipynb_checkpoints :Exists - RWX python18.ipynb :Exists - RW python01.ipynb :Exists - RW python03.ipynb :Exists - RW python23.ipynb :Exists - RW output.txt :Exists - RW python07.ipynb :Exists - RW python05.ipynb :Exists - RW prname.py :Exists - RW python21.ipynb :Exists - RW
os.chmod('output.txt', 0o777) # 리눅스에서의 실행 예
%ls -al output.txt
-rwxrwxrwx 1 yhhan staff 17 10 27 22:40 output.txt*
s = """Its power: Python developers typically report
they are able to develop applications in a half
to a tenth the amount of time it takes them to do
the same work in such languages as C."""
with open('t.txt', 'w') as f:
f.write(s) # 문자열을 파일에 기록
import os
os.rename('t.txt', 't1.txt') # t.txt를 t1.txt로 바꾼다
print(os.access('t.txt', os.F_OK))
print(os.access('t1.txt', os.F_OK))
False True
os.mkdir('example')
os.rename('t1.txt', './example/t1.txt') # 현재 작업 디렉토리의 t1.txt를 example에 t1.txt이름으로 옮긴다.
print(os.access('./example/t1.txt', os.F_OK))
True
import shutil
shutil.copyfile('output.txt', 'output_new.txt')
print(os.access('output_new.txt', os.F_OK))
True
import os
print(os.path.abspath('o.txt'))
/Users/yhhan/git/python-e-learning/python3.6/o.txt
f = '/Users/yhhan/git/python-e-learning/sample.txt'
print(os.path.exists(f))
print(os.path.exists('sample.txt'))
print(os.path.exists('asdf.txt'))
False False False
print(os.curdir) #현재 디렉토리
print(os.pardir) #부모 디렉토리
. ..
print(os.sep)
/
f = '/Users/yhhan/git/python-e-learning/t.txt'
print(os.path.basename(f)) # 파일명만 추출
print(os.path.dirname(f)) # 디렉토리 경로 추출
t.txt /Users/yhhan/git/python-e-learning
print(os.path.split(f))
('/Users/yhhan/git/python-e-learning', 't.txt')
print(os.path.splitdrive(f))
('', '/Users/yhhan/git/python-e-learning/t.txt')
print(os.path.splitext(f))
('/Users/yhhan/git/python-e-learning/t', '.txt')
path = os.path.join("/", "Users", "yhhan", "git", "python-e-learning", "t.txt")
print(path)
/Users/yhhan/git/python-e-learning/t.txt
path = os.path.join("c:\\", "Users", "yhhan")
print(path)
c:\/Users/yhhan
import os
print(os.getcwd())
/Users/yhhan/git/python-e-learning/python3.6
path = os.path.join("/", "Users", "yhhan", "Public")
#path = os.path.join("c:\\", "Users", "yhhan", "Public")
os.chdir(path)
print(os.getcwd())
/Users/yhhan/Public
import os
os.mkdir('temp') # 0755 기본 모드(rwxr-xr-x)로 만들어짐
%ls -al temp
# os.mkdir('temp2', 0700) # 0700 모드(rwx------)로 만들어짐
os.mkdir('temp2', 0o700)
os.makedirs('temp2/level1/level2') #0755 기본 모드, 중간에 필요한 디렉토리도 모두생성
print(os.access('/Users/yhhan/Public/temp', os.F_OK))
print(os.access('/Users/yhhan/Public/temp2', os.F_OK))
print(os.access('/Users/yhhan/Public/temp/level1/level2', os.F_OK))
total 0 drwxr-xr-x 2 yhhan staff 64 10 27 23:39 ./ drwxr-xr-x+ 6 yhhan staff 192 10 27 23:39 ../ True True False
import os
os.mkdir('temp3', 0o700)
path = os.path.join("temp3", "level1", "level2")
os.makedirs(path) #0755 기본 모드, 중간에 필요한 디렉토리도 모두생성
os.rmdir('temp') #디렉토리에 내용이 없을 때 삭제가능
os.rmdir('temp3') #디렉토리에 다른 파일이 있으면 삭제할 수 없음
--------------------------------------------------------------------------- OSError Traceback (most recent call last) <ipython-input-112-4a5a038b13f9> in <module> ----> 1 os.rmdir('temp3') #디렉토리에 다른 파일이 있으면 삭제할 수 없음 OSError: [Errno 66] Directory not empty: 'temp3'
os.removedirs('temp2/level1/level2')
import os
os.mkdir('temp') # 0755 기본 모드(rwxr-xr-x)로 만들어짐
os.makedirs('temp/level1/level2') #0755 기본 모드, 중간에 필요한 디렉토리도 모두생성
print(os.access('/Users/yhhan/Public/temp', os.F_OK))
print(os.access('/Users/yhhan/Public/temp/level1/level2', os.F_OK))
True True
import shutil
shutil.rmtree('temp3')
os.mkdir('temp/temp2', 0o700)
shutil.copytree('temp', 'myweb_backup')
'myweb_backup'
path = os.path.join("/", "Users", "yhhan", "Public")
#path = os.path.join("c:\\", "Users", "yhhan", "Public")
os.chdir(path)
print(os.getcwd())
/Users/yhhan/Public
if os.path.exists('temp'):
shutil.rmtree('temp')
path = os.path.join("temp", "level1", "level2")
os.makedirs(path)
with open(os.path.join("temp", "t.txt"), "w") as f:
f.write("aaa")
with open(os.path.join("temp", "level1", "t.txt"), "w") as f:
f.write("aaa")
with open(os.path.join("temp", "level1", "level2", "t.txt"), "w") as f:
f.write("aaa")
path = os.path.join("temp")
os.chdir(path)
print(os.getcwd())
print()
for path, subdirs, files in os.walk(os.getcwd()):
for fname in files:
if fname.endswith('.txt'):
fullpath = os.path.join(path, fname)
print('removing', fullpath)
os.remove(fullpath)
print()
os.chdir("..")
print(os.getcwd())
/Users/yhhan/Public/temp removing /Users/yhhan/Public/temp/t.txt removing /Users/yhhan/Public/temp/level1/t.txt removing /Users/yhhan/Public/temp/level1/level2/t.txt /Users/yhhan/Public
import os
os.chdir('/Users/yhhan/git/python-e-learning')
print(os.getcwd())
print()
for path, subdirs, files in os.walk(os.getcwd()):
for fname in files:
if fname.endswith('.txt'):
fullpath = os.path.join(path, fname)
print('removing', fullpath)
os.remove(fullpath)
/Users/yhhan/git/python-e-learning removing /Users/yhhan/git/python-e-learning/pickle.txt removing /Users/yhhan/git/python-e-learning/pickle2.txt removing /Users/yhhan/git/python-e-learning/readme.txt removing /Users/yhhan/git/python-e-learning/removeme.txt removing /Users/yhhan/git/python-e-learning/sample.txt removing /Users/yhhan/git/python-e-learning/sample_new.txt removing /Users/yhhan/git/python-e-learning/t.txt removing /Users/yhhan/git/python-e-learning/t1.txt removing /Users/yhhan/git/python-e-learning/t2.txt removing /Users/yhhan/git/python-e-learning/example/t1.txt removing /Users/yhhan/git/python-e-learning/python3.6/output.txt removing /Users/yhhan/git/python-e-learning/python3.6/sample.txt removing /Users/yhhan/git/python-e-learning/python3.6/sample_new.txt removing /Users/yhhan/git/python-e-learning/python3.6/t_new.txt removing /Users/yhhan/git/python-e-learning/python3.6/example/t1.txt
참고 문헌: 파이썬(열혈강의)(개정판 VER.2), 이강성, FreeLec, 2005년 8월 29일