■ 공부/Python

DAY 8-2. 파일 입출력

J U N E 2024. 3. 20. 17:44

파일 입출력!

이제 슬슬 파이썬도 중반쯤 왔나 싶은데,

 

■ 파일열기

f = open("파일명", "모드")

 

.....?

끝이세요?

 

그럼 파일쓰기는??

f = open('example.txt', 'w')

....

이쯤에서 내가 기억하는 자바의 파일 입출력

import java.io.*;

public class Test {
    public static void main(String[] args) throws IOException {
        FileOutputStream output = new FileOutputStream("c:/test.txt");
        output.close();
    }
}

 

ㅋㅋㅋㅋㅋㅋ

물론 파이썬도 실행구문을 아래쪽에 적어주긴 해야지만

그래봤자 두세줄 정도인데다 밀집도도 어마어마하게 차이가 난다.

심지어 자바는 예외처리도 꼭 해줘야 한다구 ㅋㅋ

 

나 정말 초심자 치고는 되게 어려운 것부터 시작했구나..

다들 왜 파이썬파이썬 했는지 알겠다

내가 아직 자바를 못하는 것도 결코 이상한 게 아니었어(...)

이렇게 합리화를 하며,

 

암튼

입출력을 저 한 문장으로 끝내버리는 쿨한 파이썬

뒤에 '모드' 이건 

읽기, 쓰기, 파일끝에 내용을 더 추가할거냐, 바이너리로 받을거냐 하는 등등을 써준다.

r: 읽기 모드 (기본값)
w: 쓰기 모드 (파일이 있으면 덮어쓰기)
a: 추가 모드 (파일의 끝에 내용을 추가)
b: 바이너리 모드 (텍스트가 아닌 바이너리 데이터를 읽고/쓸 때 사용)
+: 읽기와 쓰기 모드 (rb를 할건지 wb를 할건지~)
t: 글자를 내보내거나 읽어올 때 (r과 w에는 t가 생략되어있음)

 

f도 어쨌든 엄연한 객체이다. 

 

f = open('example.txt', 'w')    # write모드의 객체 f가 만들어짐
#경로를 안쓰면 코랩 내 파일디렉토리에 생성
f.write('hello python!\n')
f.writelines(['Line1\n', 'Line2\n'])    #리스트 형태로 쓸 때
f.close()

 

리스트형태로 써 줄 수도 있고~ 

다 쓰고 난 후엔 .close()로 꼭 닫아줘야 한다.

공유작업을 하는 경우 close 처리를 안해주면 난 이미 작업 끝났는데

다른 사람은 누가 사용하고 있다며 못 열고 뭐 이런 사태가 일어날 수 있어서.

 

하지만 close()를 굳이 안써도 되는 방법도 있다.

 

■ with 구문

with open('./data/word.txt', 'w') as f: #f: 파일 객체
    while True:
        data = input('단어를 입력하세요')
        if data.lower() == 'quit':
            break
        f.write(data + '\n')

with open(.파일경로, '모드') as f: 

요걸 써주면 굳이 close()를 쓰지 않아도 자동으로 닫아준다.

 

 

 

암튼 좀 중요한 거,

 

※ 파일 경로 파일 경로는 파일의 위치를 나타내는 문자열입니다.
이 경로를 통해 파이썬은 파일을 찾아서 해당 파일을 읽거나 쓸 수 있습니다.
파일 경로는 크게 상대 경로와 절대 경로 두 가지로 구분됩니다.

상대 경로 (Relative Path):
현재 작업 디렉토리에 대한 파일의 위치를 나타냅니다.
"data.txt": 현재 디렉토리의 data.txt 파일
"./data.txt": 현재 디렉토리의 data.txt 파일
"subfolder/data.txt": 현재 디렉토리의 하위 폴더 subfolder 안의 data.txt 파일
"../siblingfolder/data.txt": 현재 디렉토리와 동일한 위치의 다른 폴더 siblingfolder 안의 data.txt 파일

절대 경로 (Absolute Path):
파일 시스템의 루트부터의 전체 경로를 나타냅니다.
예 (Windows):
"C:\Users\UserName\Documents\data.txt"
예 (Linux/Mac):
"/home/username/Documents/data.txt"

 

상대경로는 현재 작업 디렉토리를 기억하고 있다가 그 위치를 기반으로 내 위치를 말해주는 거고

절대경로는 작업 디렉토리 상관없이 전체 경로를 말해주는 거고 그렇다.

 

 

 

 

 

 

 

 

 

 

 

 

 

'■ 공부 > Python' 카테고리의 다른 글

DAY 8-1. 파일 입출력 라이브러리  (0) 2024.03.21
DAY 9. 변수 타입 어노테이션  (0) 2024.03.21
DAY 8-1. 파이썬 모듈  (1) 2024.03.20
DAY 8. 예외처리  (0) 2024.03.20
DAY 7-2. 스페셜 메소드  (0) 2024.03.20