파이썬에서 외부 자원 txt파일을 사용할 수 있다.
기본 함수
open('디렉토리 경로', 'w' or 'r')
로 텍스트 파일 열기'w'
: 쓰기 모드로 열기'r'
: 읽기 모드로 열기read()
or write()
: 읽기 또는 쓰기close()
: 텍스트 파일 닫기. 꼭 닫아줘야 함(외부자원 메모리)file = open('E:데이터스쿨/pythonEx/pythonTxt/test.txt', 'w')
strCnt = file.write('Hi! hello world!')
print(f'길이: {strCnt}') # 길이 반환
file.close() #꼭 닫기
<result>
길이: 16
기존에 있던 파일 내용을 새로운 내용으로 덮어쓰기 하는 모드
외부 텍스트 파일의 내용 읽어오는 모드
file = open('E:/JIHYUN/데이터스쿨/pythonEx/pythonTxt/aboutPython.txt', 'r')
str = file.read()
print(str)
file.close() //파일 열고, 내용 읽어 온 다음에, 파일 닫기
str = str.replace('Python', '파이썬', 2) //a를 b로 바꾼다, 앞에서 2개 까지만
print(str)
file = open('E:/JIHYUN/데이터스쿨/pythonEx/pythonTxt/aboutPython.txt', 'w')
file.write(str)
file.close()
<result>
Python은 1991년 네덜란드계 소프트웨어 엔지니어인 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, 인터프리터를 사용하는 객체지향 언어이자 플랫폼에 독립적인, 동적 타이핑(dynamically typed) 대화형 언어이다. Python이라는 이름은 귀도가 좋아하는 코미디인〈Monty Python's Flying Circus〉에서 따온 것이다.
파이썬은 1991년 네덜란드계 소프트웨어 엔지니어인 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, 인터프리터를 사용하는 객체지향 언어이자 플랫폼에 독립적인, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디인〈Monty Python's Flying Circus〉에서 따온 것이다.
'w'
: 쓰기 전용(파일이 있으면 덮어쓰기, 없으면 새로 만듦)'a'
: 쓰기 전용(파일이 있으면 내용 다음에 덧붙임)'x'
: 쓰기 전용(파일 새로 만들어서 쓰기, 파일이 있으면 에러 발생)'r'
: 읽기 전용(파일 있을 때만 사용 가능, 파일이 없으면 에러 발생)close()
파일 닫기를 생략해도 된다.as
뒤에 적는 닉네임으로 파일명을 간략화하여 쓰기 편하다.반복 가능한 객체들(list, tuple data)을 파일에 쓸 때 사용
writelines()
를 쓰면 간단하게 가능uri = 'E:/JIHYUN/데이터스쿨/pythonEx/pythonTxt/'
languages = ['c++', 'java', 'javascript', 'python', 'c#']
# 이렇게 반복문으로 넣어야 했던 작업을
for item in languages:
with open(uri + 'lang.txt', 'a') as f:
f.write(item)
f.write('\n')
# writelines()를 이용해 한 번에 가능
with open(uri + 'lang.txt', 'a') as f:
f.writelines(languages) # 반복 가능한 개체를 넣어줌!
f.writelines(item + '\n' for item in languages) # 개행하고 싶다면
# 쓴 것 읽어보기
with open(uri + 'lang.txt', 'r') as f:
file = f.read()
print(file)
c++
java
javascript
python
c#
파일의 모든 데이터를 읽어 리스트 형태로 반환한다.
한 행만 읽어서 문자열로 반환한다.
uri = 'E:데이터스쿨/pythonEx/pythonTxt/'
# readlines()사용한 경우
with open(uri + 'lang.txt', 'r') as f:
langList = f.readlines()
print(langList)
print(type(langList))
# readline()사용한 경우
with open(uri + 'lang.txt', 'r') as f:
langLine = f.readline()
while langLine != '': #아이템이 없기 전까지 반복해서 읽어오기
print(f'langLine: {langLine}')
langLine = f.readline()
<result>
['c++\n', 'java\n', 'javascript\n', 'python\n', 'c#']
<class 'list'>
# readline()에서 한 줄씩 더 떨어지는 이유는 print의 개행 + 텍스트파일 속 \n 때문
# 이중개행 없애려면-> print(f'langLine: {langLine}', end='')
langLine: c++
langLine: java
langLine: javascript
langLine: python
langLine: c#
split(구분자)
: 구분자 기분으로 쪼개고 리스트로 반환하기strip()
: 안에 들어가는 부분 지우기scoreDic = {}
with open(uri + 'scores.txt', 'r') as f:
line = f.readline()
while line != '':
tempList = line.split(':')
# split(구분자) = 구분자를 중심으로 문자열을 잘라서 리스트 데이터로 반환해줌
scoreDic[tempList[0]] = int(tempList[1].strip('\n'))
# tempList의 0번째를 키로 만들어서 = 1번째 값을 밸류로,
# strip으로 지우고 정수로 캐스팅
line = f.readline()
print(f'scoreDic: {scoreDic}')
<result>
scoreDic: {'kor': 85, 'eng': 90, 'math': 92, 'sci': 79, 'his': 82}