All About Python 06

Jacob Kim·2024년 1월 7일
0

Datascience Dictionary

목록 보기
10/14
post-thumbnail

입력과 출력

표준 입출력(Standard Input/Output)

표준 입력 함수

name = input("이름 :")
print(name)
#이름 :김민준
#김민준

[Lab] 섭씨 온도를 화씨 온도로 변환

섭씨 온도를 화씨 온도로 변환하는 공식: F=(C∗1.8)+32

celsius = float(input("섭씨 온도 :"))
fahrenheit = (celsius * 1.8) + 32
print("화씨 온도 :", fahrenheit)
#섭씨 온도 :34.5
#화씨 온도 : 94.1

[Lab] 구구단 중의 하나의 단을 입력받아 계산

출력할 단을 입력
해당 단의 계산 결과 출력

i = int(input("출력할 단:"))
for j in range(1,10):
  print("{0} X {1} = {2}".format(i, j, i*j))
#출력할 단:3
#3 X 1 = 3
#3 X 2 = 6
#3 X 3 = 9
#3 X 4 = 12
#3 X 5 = 15
#3 X 6 = 18
#3 X 7 = 21
#3 X 8 = 24
#3 X 9 = 27

표준 출력 함수

print("Hello Python")
print("안녕 파이썬")
print(7)
print(3.14)
print([1,2,3])
print("Hello", "Python", sep="---")
print(1,2,3)
print(1, end= ' ')
print(2, end= ' ')
print(3, end= ' ')
#Hello Python
#안녕 파이썬
#7
#3.14
#[1, 2, 3]
#Hello---Python
#1 2 3
#1 2 3 

[Lab] 구구단 출력
print() 함수를 사용하여 각 단마다 횡으로 출력

for i in range(2,10):
  for j in range(1,10):
    print("{0}X{1}={2}".format(i, j, i*j), end='\t')
  print()
#2X1=2	2X2=4	2X3=6	2X4=8	2X5=10	2X6=12	2X7=14	2X8=16	2X9=18	
#3X1=3	3X2=6	3X3=9	3X4=12	3X5=15	3X6=18	3X7=21	3X8=24	3X9=27	
#4X1=4	4X2=8	4X3=12	4X4=16	4X5=20	4X6=24	4X7=28	4X8=32	4X9=36	
#5X1=5	5X2=10	5X3=15	5X4=20	5X5=25	5X6=30	5X7=35	5X8=40	5X9=45	
#6X1=6	6X2=12	6X3=18	6X4=24	6X5=30	6X6=36	6X7=42	6X8=48	6X9=54	
#7X1=7	7X2=14	7X3=21	7X4=28	7X5=35	7X6=42	7X7=49	7X8=56	7X9=63	
#8X1=8	8X2=16	8X3=24	8X4=32	8X5=40	8X6=48	8X7=56	8X8=64	8X9=72	
#9X1=9	9X2=18	9X3=27	9X4=36	9X5=45	9X6=54	9X7=63	9X8=72	9X9=81	  

파일 입출력(File Input/Output)

파일 입출력 과정

파일의 입출력 과정은 단계를 가짐
파일을 열고, 파일을 읽거나 쓰고, 파일을 닫는 순서

파일 열기/닫기

file.txt 파일을 생성하고, 열고 닫기

f = open("file.txt", 'w')
f = open("file.txt", 'r')
f.close()
!ls file.txt
#file.txt

파일 모드(File Mode)

텍스트 파일 쓰기

write()
write()를 이용하여 파일에 쓰기

f = open("file.txt", "w")
f.write("Hello Python")
f.close()
!cat file.txt
#Hello Python

writelines()
writelines()를 이용하여 list를 파일에 쓰기

list = ["One\n", "Two\n", "Three\n"]
f = open("file.txt", 'w')
f.writelines(list)
f.close()
!cat file.txt
#One
#Two
#Three

표준 입력 → 파일 쓰기
표준 입력을 input() 함수를 통해 입력 받고, write() 함수를 통해 파일에 쓰기

text = input("입력 :")
f = open("file.txt", "w")
f.write(text)
f.close()
# 입력 : 김민준
! cat file.txt
# 김민준
text = [str(text + '\n') for text in input("여러 값 입력 : ").split()]
f = open("file.txt", 'w')
f.writelines(text)
f.close()
#여러 값 입력 : 1 2 3 4 5 6 7 
! cat file.txt
#1
#2
#3
#4
#5
#6
#7
x = ""
text = ""
while x != 'q':
  x = input("반복 입력 :")
  text += x + '\n'
f = open("file.txt", 'w')
f.writelines(text)
f.close()
#반복 입력 :1
#반복 입력 :2
#반복 입력 :3
#반복 입력 :4
#반복 입력 :q
! cat file.txt
#1
#2
#3
#4
#q

[Lab] 구구단 결과를 파일에 쓰기

구구단 결과를 파일에 쓰기

f = open("dan.txt", 'w')
for i in range(2,10):
  for j in range(1,10):
    f.write("{0} X {1} = {2}\n".format(i,j,i*j))
  else:
    f.write("\n")
f.close()
!cat dan.txt
#2 X 1 = 2
#2 X 2 = 4
#2 X 3 = 6
#2 X 4 = 8
#2 X 5 = 10
#2 X 6 = 12
#2 X 7 = 14
#2 X 8 = 16
#2 X 9 = 18
#9 X 1 = 9
#9 X 2 = 18
#9 X 3 = 27
#9 X 4 = 36
#9 X 5 = 45
#9 X 6 = 54
#9 X 7 = 63
#9 X 8 = 72
#9 X 9 = 81

텍스트 파일 출력

텍스트 파일 예제

!echo "동해물과 백두산이 마르고 닳도록" > anthem.txt
!echo "하느님이 보우하사 우리나라 만세" >> anthem.txt

readline()
readline()를 이용하여 텍스트 파일을 라인 단위로 읽고 화면에 출력

f = open('anthem.txt', 'r')
while True:
  line = f.readline()
  if not line: break
  print(line)
f.close()
#동해물과 백두산이 마르고 닳도록
#
#하느님이 보우하사 우리나라 만세

readlines()
readlines()를 이용하여 텍스트 파일의 여러 라인을 읽고 화면에 출력

f = open("anthem.txt", 'r')
lines = f.readlines()
print(lines)
f.close()
#['동해물과 백두산이 마르고 닳도록\n', '하느님이 보우하사 우리나라 만세\n']

read()
read()를 이용하여 텍스트 파일을 읽고 화면에 출력

f = open("anthem.txt", 'r')
data = f.read()
print(data)
f.close()
#동해물과 백두산이 마르고 닳도록
#하느님이 보우하사 우리나라 만세

tell()
파일 포인터 위치 변경

f = open("anthem.txt", 'r')
while True:
  print(f.tell())
  line = f.readline()
  if not line: break
  print(line)
f.close()
#0
#동해물과 백두산이 마르고 닳도록
#
#46
#하느님이 보우하사 우리나라 만세
#
#92

seek()
파일 포인터 위치 이동

f = open("anthem.txt", 'r')
f.seek(46)
line = f.readline()
print(line)
f.seek(0)
line = f.readline()
print(line)
f.close()
#하느님이 보우하사 우리나라 만세
#
#동해물과 백두산이 마르고 닳도록

with 문
항상 파일을 open() 함수로 열고, close() 함수로 닫아야 하는 일을 자동으로 처리
with문을 이용하면 with 블록 내에서 파일을 열고 벗어나면 파일을 닫음

f = open("file.txt", 'w')
f.write("Hello Python")
f.close()
with open("file.txt", 'w') as f:
  f.write("Hello Python")n

[Lab] 표준 입력으로 받은 내용을 파일로 쓰기

사용자로부터 표준 입력 받음
받은 내용을 계속 파일 쓰기

f = open("file.txt", 'w')
line = ""
while True:
  line = input()
  if not line: break
  f.writelines(line + '\n')
f.close()
!cat file.txt

이진 파일(이미지) 예제

from google.colab import files
files.upload()
!ls
#1b45499a30f6508fb335481c36c2a448.jpg  anthem.txt  dan.txt  file.txt  pytorch.jpg  sample_data

이진 파일 복사

input = open('pytorch.jpg', "rb")
output = open("pytorch_copy.jpg", "wb")
while True:
  fp = input.read(1)
  if not fp: break
  output.write(fp)
input.close()
output.close()
!ls
#1b45499a30f6508fb335481c36c2a448.jpg  dan.txt	pytorch_copy.jpg  #sample_data
#anthem.txt			      file.txt	pytorch.jpg

디렉토리 및 파일 처리

디렉토리 생성
디렉토리와 파일을 다루는 다양한 함수를 제공하는 shutil와 os 라이브러리
mkdir(): 디렉토리 생성

import os
import shutil
os.mkdir('test')
os.mkdir('test/1')
os.mkdir('test/2')
os.mkdir('test/3')
!ls
#1b45499a30f6508fb335481c36c2a448.jpg  dan.txt	pytorch_copy.jpg  #sample_data
#anthem.txt			      file.txt	pytorch.jpg	  test
!ls test
#1  2  3

렉토리 및 파일 복사

shutil.copy(): 파일 복사
shutil.copytree(): 디렉토리 전체 복사

import shutil
shutil.copy('pytorch.jpg', 'pytorch_copy2.jpg')
#pytorch_copy2.jpg
!ls
#1b45499a30f6508fb335481c36c2a448.jpg  dan.txt	pytorch_copy2.jpg  #pytorch.jpg	test
#anthem.txt			      file.txt	pytorch_copy.jpg   sample_data
import shutil
shutil.copytree('test', 'test2')
#`test2`
!ls
#1b45499a30f6508fb335481c36c2a448.jpg  dan.txt	pytorch_copy2.jpg  #pytorch.jpg	test
#anthem.txt			      file.txt	pytorch_copy.jpg   sample_data	test2
!ls test2
#1  2  3

디렉토리 및 파일 확인
isdir(): 디렉토리 존재 확인
isfile(): 파일 존재 확인
exists(): 디렉토리/파일 존재 확인

import os.path
print(os.path.isdir('test'))
print(os.path.isdir('test/1'))
print(os.path.isdir('test/4'))
print(os.path.isfile('pytorch.jpg'))
print(os.path.isfile('pytorch_copy.jpg'))
print(os.path.isfile('pytorch_copy2.jpg'))
print(os.path.exists('test2'))
print(os.path.exists('test2/1'))
print(os.path.exists('test2/4'))
#True
#True
#False
#True
#True
#True
#True
#True
#False

디렉토리 목록 보기
os.walk(): 디렉토리 목록 보기

import os
for dir_name, dir_list, file_names in os.walk('./'):
  for file_name in file_names:
    print(os.path.join(dir_name, file_name))
#./1b45499a30f6508fb335481c36c2a448.jpg
#./pytorch_copy2.jpg
#./pytorch_copy.jpg    

디렉토리 및 파일 삭제
os.remove(): 파일 삭제
shutil.rmtree(): 디렉토리 안에 모든 파일/디렉토리 삭제

import os
os.remove('pytorch_copy2.jpg')
os.remove('pytorch_copy.jpg')
!ls
#1b45499a30f6508fb335481c36c2a448.jpg  dan.txt	pytorch.jpg  test
#anthem.txt			      file.txt	sample_data  test2
import shutil
shutil.rmtree('test')
shutil.rmtree('test2')
!ls
#1b45499a30f6508fb335481c36c2a448.jpg  anthem.txt  dan.txt  file.txt  pytorch.jpg  sample_data

파일 크기
os.path.getsize(): 파일의 크기를 바이트 단위로 출력

import os.path
print(os.path.getsize('pytorch.jpg'))
#12365

파일 압축

import zipfile
comp = zipfile.ZipFile('new.zip', 'w')
comp.write('pytorch.jpg')
comp.close()
!ls
#1b45499a30f6508fb335481c36c2a448.jpg  dan.txt	new.zip      sample_data
#anthem.txt			      file.txt	pytorch.jpg
decomp = zipfile.ZipFile('new.zip', 'r')
decomp.extractall('new')
decomp.close()
!ls new
#pytorch.jpg
profile
AI, Information and Communication, Electronics, Computer Science, Bio, Algorithms

0개의 댓글