파이썬 중급5

InSung-Na·2023년 1월 10일
0
post-thumbnail

해당 글은 제로베이스데이터스쿨 학습자료를 참고하여 작성되었습니다

📌텍스트 파일 다루기

  • open() : 열기
  • read() : 읽기
  • write() : 쓰기
  • close() : 닫기

📌open('경로', '모드')

  • w : 쓰기모드 : 파일이 없으면 생성, 있으면 내용 초기화
  • x : 쓰기모드 : 파일이 있으면 오류
  • a : 추가모드 : 파일이 없으면 생성
  • r : 읽기모드 : 파일이 없으면 오류발생

📝입력

print('쓰기모드')
file = open('text.txt', 'w')
strCnt = file.write('Hello world~')
print('strCnt: {}'.format(strCnt))
file.close()
print()

print('안전한 파일생성')
try:
    file = open('text.txt', 'x')
except:
    print('파일이 이미 존재합니다')
    print()
else:
    strCnt = file.write('Hello world~')
    print('strCnt: {}'.format(strCnt))
    file.close()
    print()

print('읽기모드')
file = open('text.txt', 'r')
strCnt = file.read()
print('strCnt: {}'.format(strCnt))
file.close()
print()

print('추가모드')
file = open('text.txt', 'a', encoding='utf-8')
strCnt = file.write('내용을 추가합니다')
print('strCnt: {}'.format(strCnt))
file.close()

🧾출력

쓰기모드
strCnt: 12

안전한 파일생성
파일이 이미 존재합니다

읽기모드
strCnt: Hello world~

추가모드
strCnt: 9

🧾text.txt

Hello world~내용을 추가합니다

📌close문 생략 : with~as문

📝입력

uri = "C:/pythonEx/project/2_001/"
with open(uri + 'test.txt', 'a') as f:
    f.write('python study!!')

with open(uri + 'test.txt', 'r') as f:
    print(f.read())

🧾출력

python study!!

🧾test.txt

python study!!

📌연속형 쓰기 : writelines()

아래의 방식은 개행이 안됨

📝입력

languages = ['c/c++', 'java', 'c#', 'python', 'javascritpt']
uri = "C:/pythonEx/project/2_001/"
with open(uri + 'languages.txt', 'a') as f:
    f.writelines(languages)

🧾languages.txt

c/c++javac#pythonjavascritpt

개행추가 방식

📝입력

languages = ['c/c++', 'java', 'c#', 'python', 'javascritpt']
uri = "C:/pythonEx/project/2_001/"
with open(uri + 'languages.txt', 'a') as f:
    f.writelines(item + '\n' for item in languages)

🧾languages.txt

c/c++
java
c#
python
javascritpt

읽어서 출력하기

📝입력

languages = ['c/c++', 'java', 'c#', 'python', 'javascritpt']
uri = "C:/pythonEx/project/2_001/"
with open(uri + 'languages.txt', 'r') as f:
    print(f.read())

🧾출력

c/c++
java
c#
python
javascritpt

📌데이터모양 그대로 쓰기

  • print(변수, file=출력위치)

📝입력

languages = ['c/c++', 'java', 'c#', 'python', 'javascritpt']
uri = "C:/pythonEx/project/2_001/"
with open(uri + 'origin_languages.txt', 'a') as f:
    print(languages, file=f)

🧾origin_languages.txt

['c/c++', 'java', 'c#', 'python', 'javascritpt']

📌전체를 읽어서 리스트형태로 반환 : readlines()

📝입력

uri = "C:/pythonEx/project/2_001/"
with open(uri + 'languages.txt', 'r') as f:
    lanList = f.readlines()

print('lanList : {}'.format(lanList))
print('lanList type : {}'.format(type(lanList)))
for item in lanList:
    print(item, end='')

🧾출력

lanList : ['c/c++\n', 'java\n', 'c#\n', 'python\n', 'javascritpt\n']
lanList type : <class 'list'>
c/c++
java
c#
python
javascritpt

📌행단위 읽기 : readline()

  • 텍스트에 있는 개행도 읽고, print() 자체도 개행이 있으므로 end=''사용을 고려한다

📝입력

uri = "C:/pythonEx/project/2_001/"
with open(uri + 'languages.txt', 'r') as f:
    line = f.readline()

    while line != '':
        print('line : {}'.format(line), end='')
        line = f.readline()

🧾출력

line : c/c++
line : java
line : c#
line : python
line : javascritpt

0개의 댓글