카테고리 없음

인공지능과 미래사회(파일 입출력)

20308박동진 2023. 6. 6. 23:36
파일(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번째 줄입니다.