본문 바로가기
도구

파이썬을 배워보자[파일입출력]

by fun learner 2024. 6. 29.
반응형
 

경제 데이터 분석을 위해 다양한 통계 자료들을 사용하게 됩니다. 보통은 국가기관이나 포털에서 제공하는 정도만으로도 충분히 훌륭하긴 하지만, 간혹 엑셀 같은 스프레드시트로 제공되는 데이터를 가공하는 경우도 있습니다. 그래도 부족하다고 생각된다면 프로그램 언어는 직접 배워서 해보는 것도 시도해 볼만합니다. 그럼 데이터 사이언스에 많이 사용되는 파이썬을 배워보도록 하겠습니다.

 

 

파일로 출력해 보자

 

열심히 예제로 써먹었던 구구단을 또 활용해 보겠습니다.

이제 눈감고도 작성하실 수 있을 것 같네요.

 

구구단을 파일로 출력하되

단 시작전에 몇 단이라고 출력하고

단이 끝나면 몇단끝 이라고 표시하겠습니다.

 

즉, 아래처럼 파일로 출력되게 해 보겠습니다.

 

2단:

2 * 1 = 2

2 * 2 = 4

...

2 * 9 = 18

2단끝:

3단:

3 * 1 = 3

...

 

with open('gugudan.txt', 'w', encoding='utf-8') as f:
    for i in range(2, 10):
        f.write(f"{i}단:\n")
        for j in range(1, 10):
            f.write(f"{i} * {j} = {i*j}\n")
        f.write(f"{i}단끝:\n")

 

with open 구문을 사용해서 사용할 파일을 오픈합니다.

해당 구문을 사용하면 파일 사용 후 파일 close 해줄 필요 없이 자동으로 닫히게 됩니다.

 

그리고 파일이름 뒤에 있는 'w'는 파일에 쓰기를 하겠다는 옵션이고

기존에 파일에 내용이 있으면 덮어쓰기를 합니다.

 

혹시 파일 내용을 이어서 추가하려면 'a' 옵션을 사용해야 합니다.(append)

 

실행해도 화면에는 아무것도 안 나오겠죠. 

파일로 출력했으니

 

파일은 jupyter notebook 접속할 때 화면에 보시면 있습니다.

 

파일 더블클릭 하시면 확인 가능합니다.

 

 

파일에서 결과를 읽어 출력해 보자

 

이제 미리 계산된 내용을 파일에서 읽어와 보겠습니다.

마찬가지로 with open 구문을 사용해 주시면 됩니다.

옵션은 이번엔 'r'을 사용하게 됩니다.(read)

 

dan = int(input("구구단을 입력하세요 (2~9): "))
with open('gugudan.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()
    found = False
    for line in lines:
        if line.startswith(f"{dan}단"):                    
            found = True
        if line.startswith(f"{dan}단끝"):
            break
        if found == True:
            print(line.strip())

 

파일을 열고 

lines = f.readliens() 를 통해 파일에 있는 모든 라인을 읽어 옵니다.

그러면 lines 은 리스트 형태가 되겠네요.

리스트는 for 문을 통해 반복이 가능합니다.

 

lines 을 for문을 통해 첫 줄부터 쭉 반복하면서

입력된 단이 나오면 출력을 시작하고

몇 단 끝 문자열이 나오면 for 문을 중단합니다.

 

 

파일에서 읽어서 출력이 잘 되네요.

 

 

AI 한테 시켜보자

 

소수(prime)의 정의는 1과 자기 자신으로만 나누어지는 수입니다.

소수를 구하려면 반복문을 많이 사용해야 합니다.

이걸 미리 구해서 파일에 저장해 놓고

필요할 때 가져다 쓰면 좋을 것 같습니다.

 

1에서 10억까지 숫자 중 소수(prime)를 구해서

파일 prime.txt 에서 모두 저장해 줘.

그리고 사용자에게 1 ~ 100처럼 범위를 입력받고

입력받은 범위의 소수들을 파일 prime.txt 에서 찾아서 출력하는 파이썬 코드를 작성해 줘.

 

AI 한테 시켜보겠습니다.

MS bing의 COPILOT을 사용했습니다.

 

 

에라토스테네스의 체 알고리즘을 사용하겠다는군요.

혹시 알고리즘에 관심이 있으시면 공부해 보시면 좋겠지만

전 경제 공부하는데 파이썬 활용하는 정도만 할 거라 넘어가겠습니다.

 

 

파일에 소수를 저장하는 코드이고

이어서 사용자 입력에 대한 코드도 알려주네요.

 

소수 찾기는 시간이 오래 걸리니 숫자 줄이는 게 좋을걸....

이라고 충고도 해주네요.

 

그래도 한번 돌려 보겠습니다.

얼마나 오래 걸리는지.

 

와우... 10억 개 숫자 중에 소수(prime) 구하는데 무려 5분이나 걸리네요.

사용자가 웹사이트에 접속해서 3초만 응답이 없어도 답답함을 느끼는데

5분은 너무 긴 시간이군요.

이걸 사용자 입력받을 때마다 계산한다면... CPU 터지겠네요.

 

하지만 이미 계산된 값은 그것보다는 훨씬 짧은 시간 안에 출력될 겁니다.

 

 

마치며

 

파이썬은 다른 언어에 비해

파일 입출력도 비교적 쉽게 구현할 수 있습니다.

 

그럼 엑셀에 저장된 데이터로 쉽게 읽고 쓸 수 있지 않을까 생각되는데요.

계속 공부해 보도록 하겠습니다.

 


참고자료...

 

 

파이썬을 배워보자[함수]

경제 데이터 분석을 위해 다양한 통계 자료들을 사용하게 됩니다. 보통은 국가기관이나 포털에서 제공하는 정도만으로도 충분히 훌륭하긴 하지만, 간혹 엑셀 같은 스프레드시트로 제공되는 데

stock.slowly81.com

 

파이썬을 배워보자[이중 for문]

경제 데이터 분석을 위해 다양한 통계 자료들을 사용하게 됩니다. 보통은 국가기관이나 포털에서 제공하는 정도만으로도 충분히 훌륭하긴 하지만, 간혹 엑셀 같은 스프레드시트로 제공되는 데

stock.slowly81.com

 

 

 

반응형

댓글