f = open("test.txt", "w", encoding="utf-8") f.close()
파일이 닫혔는지 열려 있는지는 f.cosed 를 통해 알수 있다.
f = open("test.txt", "w", encoding="utf-8") print("open() 다음에:", f.closed) # f.closed : 내장 변수출력 - open() 다음에 : Falsef.close() print("close() 다음에:", f.closed)출력 - close() 다음에 : True
curent working directory
import oscwd = os.getcwd() print(cwd)출력 : /content = 경로를 안썼을 때 /content 로케이션에 저장됨.
import ospath를 절대경로(abspath) 로 만들기
path1 = "myfile.txt" full_path = os.path.abspath(path1) print("abs path:", full_path)출력 - abs path : /content/myfile.txtpath를 normalize 하기
path2 = "myfolder/../myfile.txt" normalized_path = os.path.normpath(path2) print("normalized path:", normalized_path)출력 - normalized path : myfile.txtpath를 join 하기
folder_path = "myfolder" file_path = "myfile.txt" joined_path = os.path.join(folder_path,"sub_folder", file_path) print("join path:", joined_path)출력 - join path : myfolder/sub_folder/myfile.txtgood practive (좋은 practive)
path3 = os.path.join(cwd, "myfolder", "myfile.txt") print("good practive path:", path3)출력 - good practive path : /content/myfolder/myfile.txt
import osfilename = "myfile.txt" is_exist = os.path.exists(filename) print(f"{filename} 존재 여부: {is_exist}") # 읽기 전에 반드시 디렉토리에 존재하는지 확인해야됨.출력 - myfile.txt 존재 여부 : False
파일에 문자열 데이터 출력하기
f = open("myfile.txt", 'w', encoding="utf-8") for i in range(1, 11): data = f"{i}번째 줄입니다.\n" f.write(data) f.close() print("done") print("is exists : ", os.path.exists("myfile.txt"))출력 : done 출력 : is exists : True
위에서 myfile.txt 에 출력한 내용을 읽어 오기
먼저 위의 코드를 실행하여 myfiletxt에 데이터를 출력한 다음에 아래 코드드를 실행하세요.f = open("myfile.txt", 'r', encoding="utf-8") data = f.read() print(data) print(repr(data)) # 한줄의 데이터로 읽기. f.close()출력 : 1번째 줄입니다. 출력 : 2번째 줄입니다. 출력 : 3번째 줄입니다. 출력 : 4번째 줄입니다. 출력 : 5번째 줄입니다. 출력 : 6번째 줄입니다. 출력 : 7번째 줄입니다. 출력 : 8번째 줄입니다. 출력 : 9번째 줄입니다. 출력 : 10번째 줄입니다. 출력 : '1번째 줄입니다.\n2번째 줄입니다.\n3번째 줄입니다.\n4번째 줄입니다.\n5번째 줄입니다.\n6번째 줄입니다.\n7번째 줄입니다.\n8번째 줄입니다.\n9번째 줄입니다.\n10번째 줄입니다..\n')
f = open("myfile.txt", 'r', encoding="utf-8") lines = f.readlines() # 전체 줄을 한번에 읽어와서 반환 print("총 줄수:", len(lines)) print(lines) f.close()출력 - 총 줄수 : 10 출력 - ['1번째 줄입니다.\n','2번째 줄입니다.\n','3번째 줄입니다.\n','4번째 줄입니다.\n','5번째 줄입니다.\n','6번째 줄입니다.\n','7번째 줄입니다.\n','8번째 줄입니다.\n','9번째 줄입니다.\n','10번째 줄입니다.\n',]한 줄씩 출력
for line in lines: print(line.strip()) # 줄바꿈 문자도 포함되어 있기 때문에.출력 - 1번째 줄입니다. 출력 - 2번째 줄입니다. 출력 - 3번째 줄입니다. 출력 - 4번째 줄입니다. 출력 - 5번째 줄입니다. 출력 - 6번째 줄입니다. 출력 - 7번째 줄입니다. 출력 - 8번째 줄입니다. 출력 - 9번째 줄입니다. 출력 - 10번째 줄입니다.
한 줄씩 읽기
f = open("myfile.txt", 'r', encoding="utf-8") line = f.readline() while line: # None이 아닌경우에만 실행 / None일 경우 False print(line.strip()) line = f.readline() f.close()출력 : '1번째 줄입니다.\n' 출력 : '2번째 줄입니다.\n' 출력 : '3번째 줄입니다.\n' 출력 : '4번째 줄입니다.\n' 출력 : '5번째 줄입니다.\n' 출력 : '6번째 줄입니다.\n' 출력 : '7번째 줄입니다.\n' 출력 : '8번째 줄입니다.\n' 출력 : '9번째 줄입니다.\n' 출력 : '10번째 줄입니다.\n'
with open(파일 이름, 파일 열기 모드) as f: 파일 객체 f를 사용하여 파일 read 또는 write
한 줄씩 읽기
with open("myfile.txt", 'r', encoding="utf-8") as f: # open한 파일이 f로 간다는 뜻. line = f.readline() # 빠져나가면 자동으로 f.close()가 된다. / 버그를 줄일 수 있음. while line: print(line.strip()) line = f.readline() # 돌아가는 동안은 f.closed = False 멈쳤을 때는 f.closed = True출력 - 1번째 줄입니다. 출력 - 2번째 줄입니다. 출력 - 3번째 줄입니다. 출력 - 4번째 줄입니다. 출력 - 5번째 줄입니다. 출력 - 6번째 줄입니다. 출력 - 7번째 줄입니다. 출력 - 8번째 줄입니다. 출력 - 9번째 줄입니다. 출력 - 10번째 줄입니다.using with with open
with open("myfile.txt", "w", encoding="utf-8") as f: f.write("Hello, World!") with open("myfile.txt", "w", encoding="utf-8") as f: print(f.read())출력 : Hello, World!!
주어진 파일 이름으로 파일을 생성하고, 주어진 내용을 파일에 씁니다. 만약 파일이 이미 존재한다면, 기존 내용을 덮어씁니다. 에러 발생시 예외 처리는 하지 않아도 됩니다.Args: filename: 생성할 파일의 이름 (문자열) content: 파일에 쓸 내용 (문자열)
파일 입출력 연습문제 1 : 파일 생성 및 쓰기
import osdef create_and_write_file(filename, content):""" 주어진 파일 이름으로 파일을 생성하고, 주어진 내용을 파일에 씁니다. 만약 파일이 이미 존재한다면, 기존 내용을 덮어씁니다.Args: filename: 생성할 파일의 이름 (문자열) content: 파일에 쓸 내용 (문자열) """# f = open(filmename, "w", encoding="utf-8") # "w"버전으로 open하는 것부터가 clean을 하고 진행하는 것. # f.write(content) # f.close() with open(filename, "w", encoding="utf-8") as f: f.write(content)print(f"파일 '{filename}'이 성공적으로 생성 및 쓰기 완료되었습니다.")예시 사용
filename = "my_file.txt"파일 생성 및 쓰기
create_and_write_file(filename, "This is the first line. \nThis is the second line.")출력 : 파일 'myfile.txt'이 성공적으로 생성 및 쓰기 완료되었습니다.
주어진 파일 이름의 파일을 읽고, 파일의 내용을 출력합니다. 파일이 존재하지 않으면 오류 메시지를 출력합니다. 에러 발생시 예외 처리는 하지 않아도 됩니다.Args: filename: 읽을 파일의 이름 (문자열)
파일 입출력 연습문제 2 : 파일 읽기 및 내용 출력
import osdef read_and_print_file(filename):""" 주어진 파일 이름의 파일을 읽고, 파일의 내용을 출력합니다. 파일이 존재하지 않으면 오류 메시지를 출력합니다.Args: filename: 읽을 파일의 이름 (문자열) """if os.path.exist(filename): # file이 존재할 경우 with open(filename, "r", encoding="utf-8") as f : data = f.read() print(data) else: # file이 존재하지 않을 경우 print(f"파일 '{filename}'을 찾을 수 없습니다.")예시 사용
filename = "my_file.txt"파일 생성 및 쓰기 연습문제 1 실행
# create_and_write_file(filename, "This is the first line.\nThis is the second line.")파일 읽기 및 내용 출력
read_and_print_file(filename)없는 파일 케이스
read_and_print_file("non_existent_file.txt")출력 : This is the first line. 출력 : This is the second line. 출력 : 파일 'non_existent_file.txt'을 찾을 수 없습니다.
주어진 파일 이름의 파일의 끝에 주어진 내용을 추가합니다. 파일이 존재하지 않으면 새 파일을 생성하고 내용을 씁니다.Args: filename: 추가 쓸 파일의 이름 (문자열) content: 파일에 추가할 내용 (문자열)
파일 입출력 연습문제 3: 파일 추가 쓰기
def append_to_file(filename, content): """ 주어진 파일 이름의 파일의 끝에 주어진 내용을 추가합니다. 파일이 존재하지 않으면 새 파일을 생성하고 내용을 씁니다.Args: filename: 추가 쓸 파일의 이름 (문자열) content: 파일에 추가할 내용 (문자열) """with open(filename, "a", encoding = "utf-8") as f: f.write(content) print(f"파일 '{filename}'에 내용이 성공적으로 추가되었습니다.")예시 사용
filename = "my_file.txt"파일 생성 및 쓰기 연습문제 1 실행
# create_and_write_file(filename, "This is the first line.\nThis is the second line.")파일 읽기 및 내용 출력 연습문제 2 실행
# read_and_print_file(filename)파일에 내용 추가
append_to_file(filename, "\nThis is an appended line.")파일 읽기 및 내용 출력 (추가된 내용 확인)
read_and_print_file(filename)출력 : 파일 'my_file.txt'에 내용이 성공적으로 추가되었습니다. 출력 : This is the first line. 출력 : This is the second line. 출력 : This is an appended line. 출력 : 'This is the first line.\nThis is the second line.\nThis is an appended line.'
주어진 파일에서 특정 줄을 읽어서 반환합니다. 파일이 없으면 오류 메시지를 출력합니다. line_number가 유효하지 않으면 오류 메시지를 출력합니다. 오류가 발생하면 None 값을 반환 합니다.Args: filename: 파일 이름 (문자열) line_number: 읽을 줄 번호 (정수, 1부터 시작)
파일 입출력 연습문제 4: 파일에서 특정 줄 읽기
def read_specific_line(filename, line_number): """ 주어진 파일에서 특정 줄을 읽어서 반환합니다. 파일이 없으면 오류 메시지를 출력합니다. line_number가 유효하지 않으면 오류 메시지를 출력합니다. 오류가 발생하면 None 값을 반환 합니다.Args: filename: 파일 이름 (문자열) line_number: 읽을 줄 번호 (정수, 1부터 시작) """ if os.path.exists(filename): # file exists if line_number == null: print(f"라인번호 {line_number}가 유효하지 않습니다.") return None else: print(f"파일 '{filename}'을 찾을 수 없습니다.") return None예시 사용 `
filename = "my_file.txt"파일 생성 및 쓰기 연습문제 1 실행
# create_and_write_file(filename, "This is the first line.\nThis is the second line.")파일 읽기 및 내용 출력 연습문제 2 실행
# read_and_print_file(filename)파일에 내용 추가 연습문제 3 실행
# append_to_file(filename, "\nThis is an appended line.")파일 읽기 및 내용 출력 (추가된 내용 확인) 연습문제 3 실행
# read_and_print_file(filename)특정 줄 읽기
line2 = read_specific_line(filename, 2) print(f"2번째 줄: {line2}")line3 = read_specific_line(filename, 3) print(f"3번째 줄: {line3}")line5 = read_specific_line(filename, 5) print(f"5번째 줄: {line5}")file_not_exist = read_specific_line("non_existent_file.txt", 1) print(f"10번째 줄: {line_not_exist}")출력 - 2번째 줄: This is an appended line. 출력 - 3번째 줄: This is an appended line. 출력 - 5번째 줄: This is an appended line. 출력 - 파일 'non_existent_file.txt'을 찾을 수 없습니다. 출력 - 10번째 줄: None