[python] os, pathlib, read, write

hyunsooo·2021년 8월 3일
0

파이썬 3.4버전부터 내장함수로 pathlib 모듈이 추가되었다. pathlib을 사용하기 전에는 os모듈을 이용했으며 pathlib는 기본적으로 객체로 다루어진다. os모듈과 pathlib모듈의 차이점을 알아보자.

cwd()

import os
from pathlib import Path

p = Path()
print(p.cwd())

print(os.getcwd())

join

import os
from pathlib import Path

p = Path('parentdir')

print(p / 'childdir' / 'file')
print(os.path.join('parentdir', 'childdir', 'file')

디렉토리변경

디렉토리 변경은 os.chdir()를 사용한다.

import os
from pathlib import Path

p = Path('..')

print(p.cwd())

os.chdir(p)
print(p.cwd())

mkdir

import os
from pathlib import Path

#새로운 디렉터리생성
p = Path.cwd() / 'new_dir'
p.mkdir()

#새로운 디렉터리생성
path = os.getcwd() + "new_dir"
os.mkdir(path)

Tip

from pathlib import Path

Path("./dir1/dir2/dir3").mkdir(parents=True, exist_ok=True)

parents

  • True의 경우 mkdir -p옵션과 같이 상위 디렉토리를 자동 생성해준다. ( False: FileNotFound 발생 )

exist_ok

  • 이미 디렉토리가 존재할 때, True의 경우 FileExistError를 무시한다. ( False : FileExistError 발생 )

os.path.basename

import os

path = "/home/User/Desktop"

basename = os.path.basename(path)
print(basename)


path = "/home/User/Desktop/test.py"

basename = os.path.basename(path)
print(basename)

path = "test.py"

basename = os.path.basename(path)
print(basename)

os.path.dirname

import os

path = "/home/User/Desktop"

dirname = os.path.dirname(path)
print(dirname)


path = "/home/User/Desktop/test.py"

dirname = os.path.dirname(path)
print(dirname)

path = "test.py"

dirname = os.path.dirname(path)
print(dirname)

os.path.exists

import os

# 디렉토리 존재여부
path = "./data"
print(os.path.exists(path))

# 디렉토리 존재여부
path = "./test"
print(os.path.exists(path))

# 파일 존재여부
path = "./main.py"
print(os.path.exists(path))

Path().is_file(), Path().is_dir()

from pathlib import Path

file_path = './asd.txt'
print(Path(file_path).is_file())


dir_path = './model'
print(Path(dir_path).is_dir()

dir_path = './asd'
print(Path(dir_path).is_dir()

read()

read(n) : 파일에서 n개의 문자를 읽어온다.

test.txt는 아래와 같이 구성되어 있다.


hi hello
bye python


f = open('test.txt', 'r', encoding='utf-8')
f.read(3)
f.closd()
'hi '

3개의 문자열 공백까지 출력된 모습이다.

readline()

readlines() : 파일의 한줄을 문자열로 읽어온다.

f = open('test.txt', 'r', encoding='utf-8')
f.readline()
f.closd()
'hi hello\n'

readlines()

readlines() : 파일의 각각의 줄을 리스트에 담아 반환한다.

f = open('test.txt', 'r', encoding='utf-8')
f.readlines()
f.closd()
['hi hello\n', 'bye python\n']

write()

write(문자열) : 파일에 작성할 문자열을 요소로 받아 작성한다.

f = open('test2.txt, 'w', encoding='utf-8')
f.write('hi python')
f.close()

test2.txt 폴더가 생성되며 안에 hi python이 기록되어 있다.
이스케이프 문자를 사용하여 줄바꿈, 탭키 등을 사용할 수 있다.

writelines()

writelines([문자열, 문자열 ..]) : 리스트의 문자열 요소들을 전부 이어 한줄에 작성된다.

f = open('test2.txt', 'w', encoding='utf-8')

f.writelines(['hi',' ','python','!!!'])
f.close()

''.join(list)이 결과를 write하는 것과 같은 결과를 볼 수 있다.
그렇다면 아래와 같이 사용할 수 있다.

f = open('test2.txt', 'w', encoding='utf-8')

f.writelines('\n'.join(['python','java','javascript']))
f.close()

tell

file.tell() : 현재 위치를 알려줌 쉽게 커서의 위치라고 생각하면 된다. (시작은 0)

test2.txt


python
java
javascript


f = open('test2.txt', 'r', encoding='utf-8')

f.tell()
f.read(2)
f.tell()
0
2

seek

file.seek(위치) : 해당 위치로 커서를 옮기는 역할

f = open('test2.txt', 'r', encoding='utf-8')

print(f.tell())
f.read(2)
print(f.tell())

f.seek(0)
print(f.tell())
0
2
0
profile
CS | ML | DL

0개의 댓글