파일(file)이란?
- input 함수 결과의 자료형은 문자열임.
- input().split() 결과를 변수 하나로만 받으면, 그 변수 값의 자료형은 리스트임
- map함수를 사용하는 문법은 map(함수이름, 반복가능한 자료형)임.
- map객체를 list형태로 만들기 위해서는 list(map(함수이름, 반복가능한 자료형))
nums = input("두 수를 띄어쓰기로 입력하세요:").split()
nums = list(map(int, nums)) #nums의 요소를 한 번에 int로 변환
result = 0
cal = input("""
1. +
2. -
3. *
4. /
""")
if cal == "1":
result = nums[0] + nums[1]
elif cal == "2":
result = nums[0] - nums[1]
elif cal == "3":
result = nums[0] * nums[1]
elif cal == "4":
result = nums[0] / nums[1]
else :
print("잘못된 입력입니다.")
print(result)
파일 열기/생성 및 쓰기
- 파일은 파일객체 이름 = open("파일 경로/파일 이름", "파일 열기 모드") 형식으로 생성.
- 파일을 다 썼다면 닫아줘야 하는데, 파일은 파일 객체.close() 형식으로 닫음.
파일열기모드 | 설명 |
r | 읽기 모드 - 파일을 읽기만 할 때 사용 |
w | 쓰기 모드 - 파일에 내용을 새로 작성할 때 사용 |
a | 추가 모드 - 파일의 마지막 부분에 내용을 추가할 때 사용 |
- 파일 생성방법은 아래와 같음.
파일 객체 = open(파일 이름, 파일 열기 모드) //파일 읽기
파일 객체.close() //파일 닫기(생략가능)
- close 는 열려 있는 파일 객체를 닫아 주는 역할을 함.
- /(슬래시) 를 사용해서 파일의 위치를 나타내는 경우가 있는데 이는 리눅스에서의 사용법과 같음.
파일 읽기 및 내용 추가
-파일객체 이름 = open("파일 경로/파일 이름", "파일 쓰기 모드")는 대부분 피일객체 이름 = open("파일 경로/파일 이름 ", '읽기 모드')와 함께 쓰임
f = open("text.txt", 'w') //파일 쓰기
for i in range(1,11):
data = "%d번째 줄입니다." %i(포멧)
f.write(data) // == print(data)
f.close()
-->
(파일 자체에 데이터를 적는 방법)
1번째 줄입니다.
2번째 줄입니다.
3번째 줄입니다.
4번째 줄입니다.
5번째 줄입니다.
6번째 줄입니다.
7번째 줄입니다.
8번째 줄입니다.
9번째 줄입니다.
10번째 줄입니다.
++
함수 이름 | 함수 설명 | 함수 쓰임 예시 |
readline() | 파일 객체의 한 줄씩 읽고 그 문자열을 반환 | a = f.readline() |
readlines() | 파일 객체의 모든 줄을 읽고 각 줄을 리스트로 반환 | a = f.readlines() |
read() | 파일 객체의 모든 문자열을 읽고 반환 | a = f.read() |
f = open("test.txt", 'r')
while True: //무한루프
a = f.readline() //한 줄씩 읽기
if not a: break //더 이상 읽을 줄이 없으면 break
print(a)
f.close()
==
f = open("test.txt", 'r')
a = f.readlines() //여러 줄 읽기
for i in a :
i = i.strip() //줄 끝의 줄 바꿈 문자를 제거
print(a)
f.close()
==
f = open("test.txt", 'r')
a = f.read() //한 번에 다 읽기
print(a)
f.close()
- 파일을 쓰기 모드('w')로 열면 기존 내용이 삭제되고 새롭게 쓰임
f = open("test.txt", 'w')
data = "1번째 줄입니다.\n"
f.write(data)
f.close()
f = open("test.txt", 'w')
for i in range(2, 5) :
data = "%d번째 줄입니다.\n" %i
f.write(data)
f.close()
f = open("test.txt", 'r')
lines = f.read()
f.close()
print(lines)
-->
2번째 줄입니다.
3번째 줄입니다.
4번째 줄입니다.
이렇게 예시를 보면 '1번째 줄입니다'가 생략이 된 것을 볼 수 있습니다. 근데 코드 상으로만 보면 분명 '1번째 줄입니다'가 출력이 되어야 할 것같은데.. 이상하죠? 이 때 써야하는 문법이 있습니다. 위의 예시의 2번째 코드 덩어리에서 'w'가 아닌 'a'로 바꿔주는 거죠. 기존 파일에 값을 이어 입력하려면 '추가모드('a')'로 파일을 열어야하기 때문입니다.
f = open("test.txt", 'w')
data = "1번째 줄입니다.\n"
f.write(data)
f.close()
f = open("test.txt", 'a')
for i in range(2, 5) :
data = "%d번째 줄입니다.\n" %i
f.write(data)
f.close()
f = open("test.txt", 'r')
lines = f.read()
f.close()
print(lines)
-->
1번째 줄입니다.
2번째 줄입니다.
3번째 줄입니다.
4번째 줄입니다.