파이썬에서 File에 있는 값들을 관리하는 방법
File 라는 이름의 모듈하나 만들어
1 2 3 4 5 6 7 | #-*- coding: utf-8 -*- import os print u"현재 작업 디렉토리 :", os.getcwd() print u"파일 플렛폼의 파일 구분자 :", os.sep | cs |
임포트 한 os 객체에서 현재 작업 디렉토리를 얻어올수 있어
현재 작업 디렉토리 와 구분자 확인가능
파일 구분자는 os 에 따라서 슬래쉬와 역슬래쉬로 달라
cwd 는 current work directory 약자
sep 는 seperator의 약자
1 2 3 4 5 6 7 8 9 10 11 12 13 | #-*- coding: utf-8 -*- import os print u"현재 작업 디렉토리 :", os.getcwd() print u"파일 플렛폼의 파일 구분자 :", os.sep try: # 읽어올 파일 경로 구성하기 filePath=os.getcwd()+os.sep+"testFile.txt" except Exception as e: # 예외가 발생했을때 실행되는 블럭 print(e) | cs |
파일 경로를 이렇게 구성하면
현재 작업 디렉토리 하위에 testFile.txt 파일이 존재해야함
이 test 패키지 우클릭해서 New -> File 해서
하위에 testFile.txt 하나 만들어줘
만든 testFile에 이렇게 적어둬
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #-*- coding: utf-8 -*- import os print u"현재 작업 디렉토리 :", os.getcwd() print u"파일 플렛폼의 파일 구분자 :", os.sep try: # 읽어올 파일 경로 구성하기 filePath=os.getcwd()+os.sep+"testFile.txt" print filePath except Exception as e: # 예외가 발생했을때 실행되는 블럭 print(e) | cs |
print filePath 해주면
읽어낼 파일의 경로가 출력 됐어
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #-*- coding: utf-8 -*- import os import codecs print u"현재 작업 디렉토리 :", os.getcwd() print u"파일 플렛폼의 파일 구분자 :", os.sep try: # 읽어올 파일 경로 구성하기 filePath=os.getcwd()+os.sep+"testFile.txt" print filePath # 파일 열기 .open(파일경로, 모드, 인코딩) f=codecs.open(filePath,"r","utf-8") # 읽기 모드 # 텍스트 문서의 내용 읽어들이기 result=f.read() print result f.close() except Exception as e: # 예외가 발생했을때 실행되는 블럭 print(e) | cs |
이렇게 try 문 안에 코딩을 해주면
텍스트 파일에 있는 내용을 읽어옴
이 작업을 하기위해서 os 와 codecs 를 임포트 해주고
읽어올 파일 경로를 구성하고 파일을 열어준 것.
.open( ) 안에 "r"은 읽기 모드임
파일 만들어서 문자열 기록하는 코드 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #-*- coding: utf-8 -*- import os import codecs print u"현재 작업 디렉토리 :", os.getcwd() print u"파일 플렛폼의 파일 구분자 :", os.sep try: # 읽어올 파일 경로 구성하기 filePath=os.getcwd()+os.sep+"testFile.txt" print filePath # 파일 열기 .open(파일경로, 모드, 인코딩) f=codecs.open(filePath,"r","utf-8") # 읽기 모드 # 텍스트 문서의 내용 읽어들이기 result=f.read() print result f.close() # 파일 만들어서 문자열 기록하기 letterPath=os.getcwd()+os.sep+"testFile2.txt" letter=codecs.open(letterPath, "w", "utf-8") # 쓰기 모드 letter.write(u"To my Friend ~") letter.close() # close 하는 순간 파일이 만들어진다. except Exception as e: # 예외가 발생했을때 실행되는 블럭 print(e) | cs |
하고 실행하면
눈에 보이는 건 똑같은데
test 패키지를 우클릭 해서 Refresh 해주면
testFile2.txt 가 알아서 생긴것을 볼수 있다.
들어가서 내용을 확인해 보면
문자열도 기록되어 있다.
파일 열어서 문자열 추가하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #-*- coding: utf-8 -*- import os import codecs print u"현재 작업 디렉토리 :", os.getcwd() print u"파일 플렛폼의 파일 구분자 :", os.sep try: # 읽어올 파일 경로 구성하기 filePath=os.getcwd()+os.sep+"testFile.txt" print filePath # 파일 열기 .open(파일경로, 모드, 인코딩) f=codecs.open(filePath,"r","utf-8") # 읽기 모드 # 텍스트 문서의 내용 읽어들이기 result=f.read() print result f.close() # 파일 만들어서 문자열 기록하기 letterPath=os.getcwd()+os.sep+"testFile2.txt" letter=codecs.open(letterPath, "w", "utf-8") # 쓰기 모드 letter.write(u"To my Friend ~") letter.close() # close 하는 순간 파일이 만들어진다. # 파일을 열어서 문자열 추가하기 letter2=codecs.open(letterPath, "a", "utf-8") # 추가 모드 for i in range(10): letter2.write(u"\n안녕하세요") letter2.close() except Exception as e: # 예외가 발생했을때 실행되는 블럭 print(e) | cs |
문자열 추가 코드를 추가해주고 실행시켜 보면
안녕하세요 가 10번 찍혀 있어
계속 Run 시켜봐도 10번 뿐이 안찍힘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #-*- coding: utf-8 -*- import os import codecs print u"현재 작업 디렉토리 :", os.getcwd() print u"파일 플렛폼의 파일 구분자 :", os.sep try: # 읽어올 파일 경로 구성하기 filePath=os.getcwd()+os.sep+"testFile.txt" print filePath # 파일 열기 .open(파일경로, 모드, 인코딩) f=codecs.open(filePath,"r","utf-8") # 읽기 모드 # 텍스트 문서의 내용 읽어들이기 result=f.read() print result f.close() # 파일 만들어서 문자열 기록하기 letterPath=os.getcwd()+os.sep+"testFile2.txt" # letter=codecs.open(letterPath, "w", "utf-8") # 쓰기 모드 # letter.write(u"To my Friend ~") # letter.close() # close 하는 순간 파일이 만들어진다. # 파일을 열어서 문자열 추가하기 letter2=codecs.open(letterPath, "a", "utf-8") # 추가 모드 for i in range(10): letter2.write(u"\n안녕하세요") letter2.close() except Exception as e: # 예외가 발생했을때 실행되는 블럭 print(e) | cs |
쓰기 모드를 주석 처리하고 실행시켜보면
그때서야 안녕하세요가 추가로 10개 더 생성된 것을 확인할 수있어
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #-*- coding: utf-8 -*- import os import codecs print u"현재 작업 디렉토리 :", os.getcwd() print u"파일 플렛폼의 파일 구분자 :", os.sep try: # 읽어올 파일 경로 구성하기 filePath=os.getcwd()+os.sep+"testFile.txt" print filePath # 파일 열기 .open(파일경로, 모드, 인코딩) f=codecs.open(filePath,"r","utf-8") # 읽기 모드 # 텍스트 문서의 내용 읽어들이기 result=f.read() print result f.close() # 파일 만들어서 문자열 기록하기 letterPath=os.getcwd()+os.sep+"testFile2.txt" letter=codecs.open(letterPath, "w", "utf-8") # 쓰기 모드 letter.write(u"To my Friend ~") letter.close() # close 하는 순간 파일이 만들어진다. # 파일을 열어서 문자열 추가하기 letter2=codecs.open(letterPath, "a", "utf-8") # 추가 모드 for i in range(10): letter2.write(u"\n안녕하세요") letter2.close() print u".readline() 테스트" letter3=codecs.open(letterPath, "r", "utf-8") # 한줄씩 읽어와서 출력하기 print letter3.readline() print letter3.readline() letter3.close() print u".readlines() 테스트" letter4= codecs.open(letterPath, "r", "utf-8") # 한줄씩 읽은 데이터를 liest 에 담아서 리턴해준다. lines=letter4.readlines() # 반복문 돌면서 출력하기 for item in lines: print item except Exception as e: # 예외가 발생했을때 실행되는 블럭 print(e) | cs |
readline, readlines 테스트 추가 해주면
readline 가 한줄을 읽어 온 것이고
readlines 하면 파일 전부를 읽어 온 것임을 알수 있다.
File2 라는 이름의 모듈하나 더 만들어서
1 2 3 4 5 6 7 8 9 | #-*- coding: utf-8 -*- import re sample= u"a b c ddd eee" result=re.split(r"[\t ]+", sample) print result | cs |
이렇게 코딩해서 실행시켜 보면
이렇게 list 가 나옴
정규표현식을 쓸때 \가 들어가는데
정규표현식에서 \는 특별한 기호야
근데 \가 +뒤에 들어가면?
오류를 발생시킴
파이썬의 문자열에서 \를 이상하게 해석하지 말고 그냥 문자 그대로 봐주세요 가 r을 붙여주는 거야
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #-*- coding: utf-8 -*- import re import os import codecs sample= u"a b c ddd eee" result=re.split(r"[\t ]+", sample) print result cwd=os.getcwd() filePath=cwd+os.sep+"testFile.txt" f=codecs.open(filePath, "r", "utf-8") while True: data=f.readline() if data=="": break #반복문 블럭 빠져 나오기 print data | cs |
무한루프 while 문을 만들어 줘서
읽을게 없으면 반복문 블럭 빠져나오게 만들어 준거야
'FrameWork > Python' 카테고리의 다른 글
파이썬 디비 연동 (0) | 2017.08.11 |
---|---|
MariaDB Setup (0) | 2017.08.11 |
파이썬 예외처리 try / except (0) | 2017.08.11 |
파이썬 Decorator (0) | 2017.08.10 |
파이썬 lambda (2) | 2017.08.10 |