데이터 엔지니어링 과정/python

[4일차] 입력과 출력

오리는짹짹 2022. 12. 22. 15:41
목차
1. 화면출력
2. 키보드 입력
3. 파일 읽고 쓰기
4. 반복문을 이용해 파일 읽고 쓰기
5. with 문을 활용해 파일 읽고 쓰기

 

1. 화면 출력

1. 문자열 여러개를 연결하여 출력

: 자동으로 공백 발생

print("Best", "python", "book")

>>> Best python book

2. sep 활용 

: 공백 대신 다른 문자열

print("Best", "python", "book", sep = "-:*:-")

>>> Best-:*:-python-:*:-book

3. 빈칸없이 문자를 연결할 때 + 사용

print("abcd" + "efg")

>>> abcdefg

4. 콤마와 + 같이 사용

print("Best","python","book"+":","This book")

>>> Best python book: This book

5. 변수에 저장된 내용을 출력할 때

x = 10
print(x)

>>> 10

6. 문자열과 숫자를 함께 출력

name = "James"
ID_num = 789
print("Name:", name + ",", "ID Number:",ID_num)

>>> Name: James, ID Number: 789

7. 개행문자 \n 여러 줄로 출력하기

print("James is my friend. \nHe is Korean")

>>> James is my friend. 
>>> He is Korean

8. end 두 줄로 출력된 결과를 한줄로 출력하기

print("Welcome to ", end="")
print("python!")

>>> Welcome to python!

9. 형식 지정 출력

  • 나머지 연산자(%)를 이용한 형식 및 위치 지정
  • 나머지 연산자를 이용한 데이터의 출력형식과 위치를 지정하는 기본구조   
  • print("%type"%data)  
  • print("%type %type"%(data1, data2))
name = "광재"
print("%s는 나의 친구입니다." % name)

>>> 광재는 나의 친구입니다.
r = 3 #변수 r에 정수 데이터 할당
PI = 3.14159265358979 #변수 PI에 실수 데이터 할당
print("반지름: %d, 원주율: %f" % (r,PI)) # 지정된 위치에 데이터 출력

>>> 반지름: 3, 원주율: 3.141593

10. 형식 지정 문자열에서 출력위치 지정

  • string.format을 이용하는 형식지정 문자열의 기본 구조   
  • print("{0},{1},{2}.....{n}"format(data_0,data_1,data_2,.....,data_n))
animal_0 = "cat"
animal_1 = "dog"
animal_2 = "fox"

print("Animal: {0}".format(animal_0))
print("Animal: {0}, {1}, {2}".format(animal_0, animal_1, animal_2))

>>> Animal: cat
>>> Animal: cat, dog, fox
  • 출력 위치 변경
print("Animal: {1}, {2}, {0}".format(animal_0,animal_1,animal_2))

>>> Animal: dog, fox, cat
  • 정수나 실수 출력 가능 
    문자열을 변수에 대입한 후 변수를 불러서 출력
    실수의 경우 17자리까지 표현되며, 반올림 되어 출력
name = "Tomas"
age = 10
a = 0.1234567890123456789
fmt_string = "String: {0}. Integer Number: {1}. Floating Number: {2}"
print(fmt_string.format(name,age,a))

>>> String: Tomas. Integer Number: 10. Floating Number: 0.12345678901234568

11. 형식 지정 문자열에서 숫자 출력 형식 지정

  • 데이터가 숫자일 경우 {N:'출력형식'을 지정하여 다양한 형태로 출력이 가능}
a = 0.1234567890123456789
print("{0:.2f}, {0:.5f}".format(a))

>>> 0.12, 0.12346

 

🔎 {0:.2f} 에서는 각각 무엇을 의미할까? 

➡ {0:.2f} : 여기서 숫자는 format에 몇번째 것을 쓸지를 의미한다! 헷갈리면 안돼!!

➡ {0:.2f} : .2f 앞에는 생략이 되어 있다. 0.2f라고 볼 수 있는건데!! 만약에 5.2f로 쓴다면 숫자가 조금 뒤로 밀리는 걸 볼 수 있다. 

                  앞에 숫자를 입력한 후 온점(.)뒤를 생략한다면 (32f처럼), 소수점 아래 자리수는 6자리까지만 보인다.

 

2. 키보드 입력

1. data = input("문자열")

yourName = input("당신의 이름은? ")
print("당신은 {}이군요.".format(yourName))

>>> 당신의 이름은? 
<<< 오리
>>> 당신은 오리이군요.

2. 숫자 입력

  • 숫자를 입력한 예
num = input("숫자를 입력하세요: ")
print("당신이 입력한 숫자는 {}입니다.".format(num))

>>> 숫자를 입력하세요: 
<<< 37
>>> 당신이 입력한 숫자는 37입니다.
  • 숫자를 연산에 이용하기 위해서는 변환해야 한다.
a = input("정사각형 한 변의 길이는?: ")
area = int(a) ** 2
print("정사각형의 넓이: {}".format(area))

>>> 정사각형 한 변의 길이는?:
<<< 3
>>> 정사각형의 넓이: 9
  • 실수의 경우 (정수인지 실수인지 모르는 경우에는 실수로 처리하는 것이 좋음)
b = input("정사각형 한 변의 길이는?: ")
area = float(b) ** 2
print("정사각형의 넓이: {}".format(area))

>>> 정사각형 한 변의 길이는?: 
<<< 12.6
>>> 정사각형의 넓이: 158.76

 

3. 파일 읽고 쓰기

1. 파일 열기

: 내장 함수인 open()을 이용해 파일을 연다.

2. 파일 쓰기

  • 폴더로 이동하기 명령 cd C:\myPyCode 
    • myPycode 말고도 파일을 저장하고 싶은 폴더를 적으면 된다.
  • 파일을 쓰기 모드로 열고, 문자열 입력 후 파일 닫기 코드
    • 파일쓰기 모드 열기 f=open('내가 만들 파일 제목', 'w')
    • 문자열 입력 f.write('내가 적을 내용')
    • 파일 닫기 f.close() 
f = open('myFile.txt', 'w')        #(1) 'myFile.txt' 파일 쓰기 모드로 열기
f.write('This is my first file')   #(2) 연 파일에 문자열 쓰기
f.close()                          #(3) 파일 닫기
  • 파일 이름 이용해서 내용 확인하기
!type myFile.txt

>>> This is my first file

3. 파일 읽기

f = open('myFile.txt', 'r')     #(1) 'myFile.txt' 파일 읽기 모드로 열기
file_text = f.read()            #(2) 파일 내용 읽은 후에 변수에 저장
f.close()                       #(3) 파일 닫기

print(file_text)                #변수에 저장된 내용 출력

>>> This is my first file

 

4. 반복문을 이용해 파일 읽고 쓰기

1. 파일에 문자열 한 줄씩 쓰기

f = open('two_times_table.txt','w') # (1)파일을 쓰기 모드로 열기
for num in range(1,6):              # (2)for문 : num이 1~5까지 실행
    format_string = "2 x {0} = {1}\n".format(num,2*num) #저장할 문자열 생성
    f.write(format_string)          # (3) 파일에 문자열 저장
f.close()                           # (4)파일 닫기
  • 파일 이름으로 내용 확인하기
!type two_times_table.txt

>>> 2 x 1 = 2
>>> 2 x 2 = 4
>>> 2 x 3 = 6
>>> 2 x 4 = 8
>>> 2 x 5 = 10

2. 파일에서 문자열 읽기

  • readline() 한 줄 씩 문자열 읽기
f = open("two_times_table.txt") # 파일을 읽기 모드로 열기
line1 = f.readline()            # 한 줄씩 문자열을 읽기 
line2 = f.readline()
f.close()                       # 파일 닫기
print(line1, end="")            # 한 줄씩 문자열 출력 (줄 바꿈 안 함) 
print(line2, end="")

>>> 2 x 1 = 2
>>> 2 x 2 = 4
f = open("two_times_table.txt") # 파일을 읽기 모드로 열기
line = f.readline()             # 한 줄씩 문자열을 읽기 
while line:                     # line이 공백인지 검사해서 반복 여부 결정
    print(line, end = "")       # 문자열 한 줄 출력 (줄 바꿈 안 함)
    line = f.readline()         # 문자열 한 줄 읽기
f.close()                       # 파일 닫기

>>> 2 x 1 = 2
>>> 2 x 2 = 4
>>> 2 x 3 = 6
>>> 2 x 4 = 8
>>> 2 x 5 = 10

👂🏻 문자열의 경우, while에 들어가면 1로 True, 문자열이 더이상 못 들어간다면 0으로 False가 된다.

  • readlines() 한꺼번에 출력한다.
f = open("two_times_table.txt")
lines = f.readlines()
f.close()

print(lines)

>>> ['2 x 1 = 2\n', '2 x 2 = 4\n', '2 x 3 = 6\n', '2 x 4 = 8\n', '2 x 5 = 10\n']
  • for문을 이용하여 전체 읽기
f = open("two_times_table.txt") # 파일을 읽기 모드로 열기
lines = f.readlines()           # 파일 전체 읽기(리스트로 반환)
f.close()                       # 파일 닫기
for line in lines:              # 리스트를 <반복 범위>로 지정  
    print(line, end="")         # 리스트 항목을 출력 (줄 바꿈 안 함)
    
>>> 2 x 1 = 2
>>> 2 x 2 = 4
>>> 2 x 3 = 6
>>> 2 x 4 = 8
>>> 2 x 5 = 10
f = open("two_times_table.txt") # 파일을 읽기 모드로 열기
for line in f.readlines():      # 파일 전체를 읽고, 리스트 항목을 line에 할당
    print(line, end="")         # 리스트 항목을 출력(줄 바꿈 안함) 
f.close()                       # 파일 닫기

>>> 2 x 1 = 2
>>> 2 x 2 = 4
>>> 2 x 3 = 6
>>> 2 x 4 = 8
>>> 2 x 5 = 10
f = open("two_times_table.txt") # 파일을 읽기 모드로 열기
for line in f:                  # 파일 전체를 읽고, 리스트 항목을 line에 할당
    print(line, end="")         # line의 내용 출력 (줄 바꿈 안 함)
f.close()                       # 파일 닫기

>>> 2 x 1 = 2
>>> 2 x 2 = 4
>>> 2 x 3 = 6
>>> 2 x 4 = 8
>>> 2 x 5 = 10

 

5. with 문을 활용해 파일 읽고 쓰기

1. with 문의 구조

  • 파일 만들기 (myTextFile2 만들기)
with open ('C:\myPyCode/myTextFile2.txt', 'w') as f: #(1) 파일 열기
    f.write('File read/write test2: line1\n')        #(2) 파일 쓰기
    f.write('File read/write test2: line2\n')
    f.write('File read/write test2: line3\n')
  • for문으로 파일 만들기 (myTextFile3로 만들기)
with open('C:\myPyCode\myTextFile3.txt', 'w') as f:          #파일을 쓰기 모드로 열기
    for num in range(1,6):                                   #for문에서 num이 1~5까지 반복
        format_string = "3 x {0} = {1}\n".format(num, 3*num) #문자열 생성
        f.write(format_string)                               #파일에 문자열 쓰기
  • 파일 읽기  (my_TextFile2 읽기)
with open('C:\myPyCode/myTextFile2.txt') as f: #(1) 파일 열기
    file_string = f.read()                     #(2) 파일 읽기
    print(file_string)
    
>>> File read/write test2: line1
>>> File read/write test2: line2
>>> File read/write test2: line3
  • for문으로 파일 읽기 (myTextFile3)
with open('C:\myPyCode\myTextFile3.txt','r') as f: #파일을 읽기 모드로 열기
    for line in f:                                 #파일 전체를 읽고 리스트 항목을 line에 할당
        print(line, end="")                        #line에 할당된 문자열 출력 (줄 바꿈 안 함)
        
>>> 3 x 1 = 3
>>> 3 x 2 = 6
>>> 3 x 3 = 9
>>> 3 x 4 = 12
>>> 3 x 5 = 15