python 기법] 파일 읽고 쓰기

 

홈 디렉토리 확인, 작업 디렉토리 확인, 디렉토리 내용 확인

# 홈 디렉토리 확인
from pathlib import Path

print(Path.home())

# 작업 디렉토리 확인
from pathlib import Path

print(Path.cwd())

# 디렉토리 내용 확인
from pathlib import Path

files = Path.cwd().glob('*')
for f in files:
    print(f)

 

기본적인 파일 읽고 쓰기

파일 쓰기

# 파일 열기
f = open('MyFile.txt', 'w')

# 파일 쓰기
f.write('안녕하세요?\n')

# 파일 닫기
f.close()

 

디렉토리 만들기

# 디렉토리 만들기
Path('Files').mkdir(exist_ok=True)

 

파일 열기, 쓰기, 닫기

# 파일 열기
f = open('Files/MyFile.txt', 'w')

# 파일 쓰기
f.write('모두들 안녕하세요?\n')

# 파일 닫기
f.close()

 

파일 읽기

# 파일 열기
f = open('MyFile.txt', 'r')

# 내용 읽기
print(f.read())

# 파일 닫기
f.close()

 

경로 지정해서 읽기

# 파일 열기
f = open('Files/MyFile.txt', 'r')

# 내용 읽기
print(f.read())

# 파일 닫기
f.close()

 

파일 내용 추가

# 파일 열기
f = open('MyFile.txt', 'a')

# 내용 추가
f.write('만나서 반갑습니다!')

# 파일 닫기
f.close()

 

x 모드, 같은 파일이 있으면 오류 발생

# 파일 열기 
f = open('MyFile.txt', 'x')

# 내용 쓰기
f.write('만나서 반갑습니다!')

# 파일 닫기
f.close()

 

# 오류 핸들링
try: 
    f = open('MyFile.txt', 'x')
    f.write('만나서 반갑습니다!')
    f.close()
except FileExistsError:     #  이미 파일이 있으면
    print('같은 이름의 파일이 있습니다.')
else:                       # 그렇지 않으면
    print('파일 쓰기 성공했습니다.')
finally:                    # 마무리
    print('수고하셨습니다.')

 

 

 

파일 다루기 실습

 

python 파일 만들기

# 파일 열기
f = open('Python.txt', 'w')

 

내용 입력

# 내용 쓰기
f.write('''<파이썬과 나>  
시인: 홍길동''')

# 파일 닫기
f.close()

 

내용 추가

# 파일 열기
f = open('Python.txt', 'a')

# 내용 추가
f.write('''
어느날 
파이썬이 나에게 왔다.
많이 낯설었다.
지금은 나와 하나가 되었다.
파이썬이 나고,
내가 파이썬이다.''')

# 파일 닫기
f.close()

 

ㆍ f = open('Python.txt', 'a')에서 'a'는 파일을 "추가 모드(append mode)"로 열기 위한 파일 모드

 

writelines()

# 파일 여러 줄 쓰기
hello = ['안녕하세요?\n', '만나서 반갑습니다!\n', '우리 사이좋게 잘 지내요.\n']
f = open('MyFile.txt', 'w')
f.writelines(hello)
f.close()

 

내용 확인

# 파일 읽기
f =  open('MyFile.txt', 'r') 
print(f.read())
f.close()

 

readlines()

# 파일 한 번에 읽기
f = open('MyFile.txt', 'r')
result = f.readlines()
f.close()

# 내용 확인
print(result)
# 반복문으로 한 행씩 표시
for txt in result:
    print(txt, end='')

 

readline()

ㆍ 행 단위로 읽기

# 파일 읽기
f = open('MyFile.txt', 'r')

# 내용 읽기
print(f.readline(), end='')
print(f.readline(), end='')
print(f.readline(), end='')

# 파일 닫기
f.close()

 

ㆍ 반복문을 이용해 모든 행 읽기

# 파일 읽기
f = open('MyFile.txt', 'r')
result = f.readline()

# 반복문으로 한 행씩 읽어 표시
while result:
    print(result, end='')
    result = f.readline()

# 파일 닫기
f.close()

 

 

'Python > python 기법' 카테고리의 다른 글

python 기법] 워드 클라우드  (1) 2023.12.03
python 기법] 이메일  (0) 2023.11.29

python 기법] 워드 클라우드

 

텍스트 전처리

ㆍ 파일 읽기, 내용 확인

# 파일 읽기
file = open('Dream.txt', 'r', encoding='UTF-8')
text = file.read() 
file.close()

# 확인(100 글자만)
text[:100]

 

ㆍ split() 메소드를 이용하여 단어 단위로 잘라 리스트 형태로 만들기

# 공백을 구분자로 하여 단어 단위로 자르기
wordList = text.split()

# 확인(10 개만)
wordList[:10]

 

 

단어별 빈도수 계산하여 딕셔너리에 저장

# 중복 단어 제거
worduniq = set(wordList)

# 딕셔너리 선언
wordCount = {}

# 단어별 개수 저장
for w in worduniq:
    wordCount[w] = wordList.count(w)

# 제외 대상 조사 
del_word = ['the','a','is','are', 'not','of','on','that','this','and','be','to', 'from']

# 제외하기
for w in del_word:
    if w in wordCount:
        del wordCount[w]

 

 

워드 클라우드 그리기

# 패키지 설치
!pip install wordcloud

# 라이브러리 불러오기
import matplotlib.pyplot as plt
from wordcloud import WordCloud
%config InlineBackend.figure_format='retina'

# 워드 클라우드 만들기
wordcloud = WordCloud(font_path = 'C:/Windiws/fonts/HMKMRHD.TTF', 
                      width=2000,
                      height=1000,
                     # colormap='Blues'
                      background_color='white').generate_from_frequencies(wordCount)

# 표시하기
plt.figure(figsize=(12, 6))
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

 

불필요한 단어나 조사 추가 제거

# 제외 대상 조사
del_word = ['for','But','into','So', 'which','by','as','With','am','was','when','who', 'an', 'has', 'in']

# 제외하기
for w in del_word:
    if w in wordCount:
        del wordCount[w]

 

워드 클라우드 그리기

# 워드 클라우드 만들기
wordcloud = WordCloud(font_path = 'C:/Windiws/fonts/HMKMRHD.TTF',
                      width=2000, 
                      height=1000, 
                      background_color='white').generate_from_frequencies(wordCount)

# 표시하기
plt.figure(figsize=(12, 6))
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

Python_기법] 이메일

 

라이브러리 import

 

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

 

파일

 

def send_email(subject, body, recipient, files):
    sender = '메일@메일.com'
    password = '앱 비밀번호'

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(sender, password)

    message = MIMEMultipart()
    message['From'] = sender
    message['To'] = recipient
    message['Subject'] = subject
    message.attach(MIMEText(body, 'plain'))

    for file in files: # files의 항목들을 연다.
        attachment = open(file, 'rb')
        part = MIMEBase('application', 'octet-stream') # MIMEBase 타입을 설정한다. 'application', 'octet-stream' 이것은 일반적인 바이너리 파일을 나타내는 MIME, 다양한 유형의 파일 첨부 가능
        part.set_payload((attachment).read())
        encoders.encode_base64(part) # ASCII 문자열로 변환하여 이메일을 통한 전송 중에 데이터가 손상되지 않도록 한다.
        part.add_header('Content-Disposition', "attachment; filename= %s" % file)
        message.attach(part)

    # 이메일 발송
    server.send_message(message)
    server.quit()

 

함수 사용

 

if st.button('Sending email'): # streamlit 전송 버튼
    send_email(
        subject = '제목',
        body = 'Check This File',
        recipient = '메일@메일.com',
        files = ['./under.csv', './over.csv']
        )
    st.write('Complete')

enumerate

my_list = ['mislav', 'stanko', 'milav', 'ana']

# enumerate() 함수를 사용하여 딕셔너리 생성
my_dict = {index: value for index, value in enumerate(my_list)}

print(my_dict)

 

 

 

 

'Python > 타입_리스트' 카테고리의 다른 글

타입_리스트] 기초  (0) 2023.09.24

Python] 가상환경 만들기, jupyter 설치, kernel 연결

파이썬 버전도 지정하여 가상환경을 생성하고 싶으면 두 번째 줄에 있는 코드를 사용하면 된다.

conda create -n name
conda create -n name_38 python=3.8

 

 

가상환경 목록 확인하기

conda env list

 

가상환경 활성화, 비활성화, 삭제

conda activate name_38
conda deactivate
conda env remove -n name_38

 

 

가상환경에 jupyter notebook 설치, kernel 연결

conda activate name_38
pip install jupyter notebook
python -m ipykernel install --user --name name_38 --display-name "name_38"

 

 

가상환경에 jupyter notebook 설치, kernel 연결

conda list

 

가상환경에 pip show 라이브러리

pip show tensorflow

 

conda search 라이브러리

conda search 라이브러리

 

 

라이브러리 삭제

pip uninstall 라이브러리

'Python > 기초_설정' 카테고리의 다른 글

Python] 버전 변경  (0) 2023.11.14

버전 변경

python -V
conda search python
conda install python=x.x.x

 

 

GPT

원하는 요소 제거하기

  •  my_list.remove("요소")
  • del my_list[인덱스 번호]

 

 

기초 _데이터 타입, 문법] 메모리

  • 데이터 확인
  • 데이터 리셋
%whos 데이터 확인
%reset 데이터 리셋

 

'Python > 기초_데이터 타입, 문법' 카테고리의 다른 글

기초_데이터 타입, 문법] 클래스  (0) 2023.09.09

클래스 개념

class, self, __init__() 클래스는 사용자 정의 데이터 타입
   
클래스선언(코드작성) class Marine:
    health, ap = 40, 5
    def attack(self, target) :
        target.health -= self.ap
   
객체 생성 m1, m2 = Marine(), Marine()
m1.health, m1.ap, m2.health, m2.ap
   
생성자 메서드 스페셜 메서드 중 하나(특별한 기능을 하는 앞뒤로 __가 있는 메서드)

__init__() : 객체를 생성할 때 실행되는 메서드
   
클래스 선언(코드 작성) class Marine:
    def __init__(self, health, ap =5):
        self.health, self.ap = health, ap

    def attack(self, target):
        target, health -= self.ap
   

'Python > 기초_데이터 타입, 문법' 카테고리의 다른 글

기초_데이터 타입, 문법] 메모리  (0) 2023.09.09

타입_딕셔너리] 기초

 

딕셔너리 정의 방법

딕셔너리 연산

enumerate

+ Recent posts