본문 바로가기
학부 자료/Python

[Python] 파이썬 기초 11/20, 모듈, 파일 입출력

by jackMK 2023. 11. 7.

<내용정리>

 

- 관련 파일

11일차_221209.py
0.00MB
python_test_11_파일입출력_문제.py
0.00MB



- 본문

## 모듈과 조건문을 이용한 계절 구하기
import datetime
now = datetime.datetime.now()  # 현재 날짜와 시간을 가져온다(PC로부터)
m = now.month  # 추출한 날짜/시간 변수에 있는 월만 따로 추출해서 m변수에 저장

if 3 <= m <= 5:
    print('spring')
elif 6 <= m <= 8:
    print('summer')
elif 9 <= m <= 11:
    print('atumn')
else:
    print('winter')

# ex) 모듈을 이용한 속으로 10초 세어 맞히는 프로그램
import time
input('엔터를 누르고 10초를 셉니다')
start = time.time()  # 현재 시간을 저장

input('10초 후에 다시 엔터를 누릅니다')
end = time.time()

es = end - start
print(f'실제 걸린 시간 : {es}초')
print(f'내가 예측한 시간의 차이 : {abs(es-10)}초')  # abs() --> 절대값

from datetime import *
start = datetime.now()  # 계산하기 전 현재 시간
total = 0
for num in range(1, 10000001):
    total += num
end = datetime.now()  # 계산 완료 후 현재 시간
elapse = end - start
elapse = elapse.total_seconds()  # 초 단위로 변환하여 다시 저장
print(f'총 합은 {total}')
print(f'총 {elapse}초가 소요되었습니다')

### 파일 입출력
## 파일 생성하고 문자열 쓰기
<형식> (기본 문법)
파일객체명 = open('파일 이름', 'w')  # 파일 열기
파일객체명.write('문자열')
파일객체명.write(str(숫자))  #  write 함수는 문자열 형식만 가능
파일객체명.close()  # 파일 닫기

<형식> (리스트 사용)
리스트명 = [값1, 값2, ...]
파일객체명 = open('파일 이름', 'w')
파일객체명.writelines(리스트명)
파일객체명.close()

# ex)
file = open('hello.txt', 'w')  # 파일 열기(쓰기모드 == w)
file.write('hello world')
file.close()

# ex) for문을 이용해서 파일에 문자열 쓰기
file = open('hello.txt', 'w')  # 상대경로
# 'c:/a/hello.txt' --> c드라이브 안에 a라는 폴더에 hello.txt를 생성한다(절대경로) * /, \ 둘 다 사용 가능
for i in range(1, 11):
    data = f'{i}번째 줄입니다.\n'
    file.write(data)
file.close()

# ex) for문을 이용해서 파일에 새로운 내용을 추가하기
file = open('hello txt', 'a')
for i in range(11, 21):
    data = f'{i}번째 줄입니다!!!!!! \n'
    file.write(data)
file.close()

## 파일에서 문자열 읽기
<형식>
파일객체명 = open('파일이름', 'r')
변수명 = 파일객체명.read()
파일객체명.close()
print(변수명)  # 화면으로 보고싶을 때 사용

# ex)
f = open('hello txt', 'r')
temp = f.read()
f.close()
print(temp)

## 파일에서 여러 줄을 리스트로 각각 읽기
<형식>
파일객체명 = open('파일이름', 'r')
리스트명 = 파일객체명.readlines()
파일객체명.close()
print(리스트명)

# ex)
f = open('hello txt', 'r')
list = f.readlines()
f.close()
print(list)
for i in lines:
    print(i, end='')  # print함수에 있는 엔터 기능을 없앤다

## with문과 함께 파일 입출력하기
파일을 열면 항상 close 해줘야 하는 불편함을 덜어주는 기능
<형식>
with open('파일 이름', '파일 열기 모드') as 파일객체명:
    수행할 코드

# ex)
li = ['Hello\n', 'world\n', 'python\n', 'coding\n']
with open('file.txt', 'w') as f:
    f.writelines(li)  # 리스트를 파일에 쓸 때
    f.write('lol\n')
    f.write('~~~~~~~\n')

with open('file.txt', 'r') as f:
    temp = f.read()  # 파일의 내용을 모두 읽어 temp변수에 담았다
print(temp)

# p232
import time
file = open(time.strftime('%Y-%m-%d') + '.txt', 'at')
while True:
    schedule = input('오늘의 스케줄을 입력하세요 : ')
    if not schedule:
        break
    file.write(schedule + '\n')
file.close()

# ex)
file = open('엄마돼지아기돼지.txt', 'rt')
line_list = file.readlines()
count = 0
for line in line_list:
    for ch in line:
        if ch == '꿀':
            count += 1
file.close()
print(f'꿀은 전체 {count}번 나타납니다')

 


- 문제 및 정답

# 파일 입출력
''''''
'''
[문제]

새로운 텍스트 파일 Text.txt를 추가하고 1부터 10까지의 수가 입력되도록 저장하여라.


[파일 출력결과]
12345678910

'''
# #1
# file = open('Text.txt', 'w')
# file.write('1, 2, 3, 4, 5, 6, 7, 8, 9, 10')
# file.close()
#
# #2
# file = open('Text.txt', 'w')
# for i in range(1, 11):
#     file.write(str(i))
# file.close()
#
# #3
# with open('Text.txt', 'w') as file:
#     for i in range(1, 11):
#         file.write(str(i))


'''
[문제]

새로운 텍스트 파일 loop.txt를 생성하되, 파일열기모드를 추가모드로 한다. 
1부터 100까지 한 칸씩만 띄우고 모두 한 줄에 저장한다.


[파일 출력결과]
숫자 1 숫자 2 ..... 숫자 99 숫자 100 

'''
# file = open('loop.txt', 'a')
# for i in range(1, 101):
#     w = f'숫자 {i} '
#     file.write(w)
# file.close()


'''
[문제]

practice.txt를 만들어 “제1의아해가무섭다고그리오.”부터 “제5의아해가무섭다고그리오.”까지 
순서대로 한 줄에 하나씩 입력하여 저장하시오.
그리고 그 파일을 열어 파이썬화면에서 출력하시오


[화면 출력결과]

제1의아해가무섭다고그리오.

제2의아해가무섭다고그리오.

제3의아해가무섭다고그리오.

제4의아해가무섭다고그리오.

제5의아해가무섭다고그리오.

'''
file = open('practice.txt', 'w')
# for i in range(1, 6):
#     w = f'제{i}의아해가무섭다고그리오\n'
#     file.write(w)
# file.close()
#
# file = open('practice.txt', 'r')
# i = file.read()
# file.close()
# print(i)

loading