■ 142. 바이너리 파일 복사하기(read, write)
"이미지 파일을 파이썬으로 복사하는 방법"
예제:
bufsize=1024 #이미지를 저장 할 최소 기본 메모리
#사이즈
f=open("d:\\16.png",'rb') #바이너리 파일을 읽겠다.
#바이너리 파일은 2진으로 되어있는 이미지 파일!!
h=open("d:\\16_copy.png",'wb')
data=f.read(bufsize)
while data:
h.write(data)
data = f.read(bufsize) #이거 없으면 무한돈다!
h.close()
문제338.
아래의 개사진 전부를 d드라이브 밑에 image 라는 폴더를 만들고
거기에 복사하는 파이썬 코드를 작성하시오
import os
path_dir='c:\\dog_images'
bufsize=1024
file_list=os.listdir(path_dir)
file_list.sort()
#print(file_list)
for items in file_list:
f=open("c:\\dog_images\\"+items,'rb')
h=open("c:\\images\\"+items,'wb')
data=f.read(bufsize)
while data: #불러올 데이타가 있는 동안 반복해라
h.write(data)
data = f.read(bufsize) #마지막으로 불러오는 데이터라면, while은 종료된다
f.close()
h.close()
****저 f.read(bufsize) 가 수타래(?) 짜듯이
사진을 한올한올 갖고와서 h.write(data) 하는거임.
그래서 한올한올 사진다 가져오면 while 문이 끝나는 것임.
■ 143. 파일을 열고 자동으로 닫기 (with~as)
예제:
f=open("d:\\stockcode_part.txt",'r')
data=f.readlines()
print(data)
f.close() #파일을 닫는 코드를 명시해줬다.
문제339.
위의 예제를 파일을 닫는 f.close() 를 명시하지 않고
자동으로 닫히게 하시오 !
with open("d:\\stockcode_part.txt",'r') as f:
for i in f.readlines():
print(i)
※ 설명: with~as 절을 사용하게 되면 f.close() 를 명시하지 않아도 되므로
프로그래머가 실수로 f.close() 를 작성하지 않아서 코드 실행할 때
메모리 부족 오류가 나는 것을 예방할 수 있다.
■ 144. 파일의 특정 부분만 복사하기(seek, read, write)
"파일을 전부 copy 하는게 아니라 일부분만 copy 하는 방법"
예제:
spos=105 #파일을 읽는 위치를 지정-> 105 바이트 위치부터 읽겠다.
size=500 #읽을 크기를 지정-> 크기가 500바이트 까지 읽겠다.
spos=105
size=500
f=open('d:\\stockcode.txt','r')
h=open('d:\\stockcode_part.txt','w')
f.seek(spos)
data=f.read(size)
h.write(data)
h.close()
f.close()
결과: 두산우 부터 출력된다. (spos를 105 로 해서 거기부터 읽어옴)
**만약 f.seek(spos) 대신 f.read(spos) 를 하면
spos=105 까지 읽어오는걸로 작업실행 된다.
(성창기업\n000 까지 읽힘)
■ 145. 파일 크기 구하기 (ospathgetsize)
from os.path import getsize
file1='d:\\stockcode.txt'
file2='d:\\16.png'
file_size1=getsize(file1)
file_size2=getsize(file2)
print('file name: %s file size: %d' %(file1,file_size1))
print('file name: %s file size: %d' %(file2,file_size2))
■ 146. 파일 삭제하기(osremove)
예제:
from os import remove
target_file='d:\\stockcode_part.txt'
k=input('[%s] 파일을 삭제하겠습니까? (y/n)' %(target_file))
if k=='y':
remove(target_file)
print('[%s] 를 삭제했습니다.' %(target_file))
**휴지통에도 없다. 그냥 완전히 날라가버렸다.
shift+delete 와 같은 작동이 일어난다
문제340. (점심시간 문제)
위의 코드를 가지고 파일명을 물어보게 하고
입력하면 해당 파일이 삭제가 되는 코드를 작성하시오!
print(delete_file())
삭제하고 싶은 파일을 입력하세요~ d:\\mydata1.txt
def delete_file():
from os import remove
target_file = input('삭제하고 싶은 파일을 입력하세요 ~ ')
k = input('[%s] 파일을 삭제하겠습니까?(y/n)' % target_file)
if k == 'y':
remove(target_file)
print('[%s]를 삭제했습니다.' % target_file)
delete_file()
■ 147. 파일이름 바꾸기(osrename)
예제:
from os import rename
target_file='d:\\stockcode.txt'
newname=input('[%s]에 대한 새로운 파일 이름을 입력하세요: '%(target_file))
rename(target_file,newname)
print('[%s]->[%s]로 파일이름이 변경되었습니다.' %(target_file, newname))
■ 148.파일을 다른 디렉토리로 이동하기(osrename)
예제:
from os import rename
target_path = 'c:\\'
target_file = 'stockcode_part.txt'
newpath = input('[%s]를 이동할 디렉터리의 절대경로를 입력하세요: ' %target_file)
if newpath[-1] == '/':
newname = newpath + target_file
else:
newname = newpath + '/' + target_file
try:
rename(target_path + target_file, newname)
print('[%s] -> [%s]로 이동되었습니다.' %(target_file, newname))
except FileNotFoundError as e:
print(e)
■ 149. 디렉토리에 있는 파일목록 얻기(oslistdir)
"딥러닝 때 사용할 데이터 전처리 코드 작성"
※ 딥러닝 수업 때 사용할 코드가 크게 2가지
1. 이미지 데이터를 파이썬으로 로드하는 함수
2. 신경망 구현 함수
문제341.
폐사진 폴더에 있는 이미지들을 불러오는 함수를 생성하시오.
import os
test_image='d:\\data\\image\\'
def image_load(path):
file_list=os.listdir(path)
return file_list
print(image_load(test_image))
위 내용들이 리스트에 담겨져서 출력됨
문제342.
위의 스크립트를 수정해서 png 를 떼버리고 아래와 같이 출력되게 하시오
import os
test_image='d:\\data\\image\\'
def image_load(path):
import re
file_list=os.listdir(path)
x=[]
for i in file_list:
x.append(re.sub('[^0-9]','', i)) #숫자를 제외한 나머지를 정제하라
return x
print(image_load(test_image))
문제343.
아래의 결과를 1,2,3,4,5.... 순으로 정렬되게 하시오
**csv 빼내고 int 해야 됨.
import os
test_image='d:\\data\\image\\'
def image_load(path):
import re
file_list=os.listdir(path)
x=[]
for i in file_list:
x.append(int(re.sub('[^0-9]','', i)))
x.sort()
return x
print(image_load(test_image))
int 안 씌우면 맨 앞자리 숫자만 보고 정렬시킴.
그래서 4000번대가 중간에 오고
900번대가 뒤로 오고 그러함.
문제344.
위의 예제를 이용해서 아래와 같이 결과가 출력되게 하시오
import os
test_image='d:\\data\\image\\'
def image_load(path):
import re
file_list=os.listdir(path)
x=[]
for i in file_list:
x.append(int(re.sub('[^0-9]','', i)))
x.sort()
for j in x:
print (str(j)+'.png',end=',')
image_load(test_image)
-----------------------------------------------------------------------
import os
def image_load(path):
import re
file_list=os.listdir(path)
file_list.sort()
return file_list
test_image='d:\\data\\image\\'
print(image_load(test_image))
이렇게 원래형태에서 바로 하면, 숫자 정렬이 안된다. (png가 붙어있으니까)
문제345.
이미지 앞에 절대 경로가 아래처럼 붙게 하시오
import os
test_image='d:\\data\\image\\'
def image_load(path):
import re
file_list=os.listdir(path)
x=[]
for i in file_list:
x.append(int(re.sub('[^0-9]','', i)))
x.sort()
for j in x:
print (test_image+str(j)+'.png',end=',')
image_load(test_image)
문제346.
위의 이미지들을 딥러닝 신경망에 넣기 전의 데이터인 숫자배열로
만들기 위해서
cv2.imread 함수를 이용해서 list 로 변환하시오 !
아나콘다 프롬프트 창 열고
install opencv
y
import cv2
import numpy
import re
import os
test_image='d:\\data\\image\\' #주의! 사진 30장 정도만 시도해볼 것!!
def image_load(path):
import re
file_list=os.listdir(path)
x=[]
for i in file_list:
x.append(int(re.sub('[^0-9]','', i)))
x.sort()
b=[]
for j in x:
b.append(test_image+str(j)+'.png')
image=[]
for z in b:
img=cv2.imread(z)
image.append(img)
return image
image_load(test_image)
결과: 빨강, 녹색, 파랑
스파이더에서는 색없이 나오지만, 저렇게 색으로 출력된다.
■ 150. 현재 디렉토리 확인하고 바꾸기 (osgetcwd, oschdir)
import os
pdir=os.getcwd()
print(pdir)
스파이더->tools->current working directory
the following directory: 폴더그림 클릭
그러면 현재 디렉토리가 어디인지 확인가능하다 !
import os
os.chdir("c:\\")
print(os.getcwd())
다시 원위치
import os
os.chdir("C:\\Users\\stu") #안되면 itwill
print(os.getcwd())
■ 151. 디렉토리 생성하기(osmkdir) os.메이크디렉토리
import os
newfolder=input('새로 생성할 디렉토리 이름을 입력하세요:')
os.mkdir(newfolder)
현재 디렉토리에 내가 쓴 이름으로 폴더가 생성된다.
문제347.
위의 스크립트를 수정해서 폴더를 생성했으면
아래와 같이 결과가 출력되게 하시오
import os
pdir=os.getcwd()
newfolder=input('새로 생성할 디렉토리 이름을 입력하세요:')
os.mkdir(newfolder)
print('[%s] 에 [%s] 폴더가 생성되었습니다.' %(pdir, newfolder))
■ 152. 디렉토리 제거하기 (osrmdir) os.리무브디렉토리
예제:
d 드라이브 밑에 data7 이라는 폴더를 만들고 테스트 하시오
--------
data7 을 만들고 아래 코드 실행
import os
target_folder='d:\\data7'
os.rmdir(target_folder)
문제348.
다시 data7 폴더를 생성하는데 이번에는 폴더 생성 후에
파일을 몇 개 넣은 후에 파이썬 코드로 삭제해보시오.
import os
target_folder='d:\\data7'
os.rmdir(target_folder)
답: 안된다.
■ 153. 하위 디렉토리 및 파일 전체 삭제하기(shutilrmtree) 서틸.리무브트리
#import os
import shutil
target_folder='d:\\data7'
shutil.rmtree(target_folder)
**하위 내용을 가지고 있던 data7 이 날라가는 걸 볼 수 있다.
■ 154. 파일이 존재하는지 체크하기 (ospathexists)
d드라이브 밑에 data7 폴더를 생성한 후에 테스트 하세요
from os.path import exists
target_folder='d:\\data7'
exists(target_folder)
문제349.
아래와 같이 폴더를 생성하는 스크립트를 작성하는데
폴더가 이미 존재하면 이미 존재합니다 라는
메시지가 나오게 하시오
from os.path import exists
target_folder=input('새로 생성할 폴더 이름을 입력하세요~')
if exists(target_folder):
print('폴더가 [%s] 이미 생성되었습니다.' %(target_folder))
else:
print('폴더가 [%s] 새로 생성되었습니다.' %(target_folder))
|| 선생님답 ↓
from os.path import exists
target_folder=input('새로 생성할 폴더 이름을 입력하세요~')
if not exists(target_folder):
os.mkdir(target_folder)
else:
print('이미 존재합니다')
■ 155. 파일인지 디렉토리인지 확인하기 (ospathisfile, ospathisdir)
예제:
import os
from os.path import exists, isdir, isfile
files=os.listdir() # os.listdir()을 적용시킨 files 제작
for file in files:
if isdir(file):
print('DIR:%s' %(file))
for file in files:
if isfile(file):
print('File: %s' %(file))
문제350.(오늘의 마지막 문제)
오라클 next_day 함수를 파이썬으로 구현하시오
힌트:
weekday_dic['월요일']=0
weekday_dic['화요일']=1
weekday_dic['수요일']=2
: :
: :
결과:
print(next_day('2018-12-10', '수요일'))
2018-12-12
----------------------------------------------------------------
dy=['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일']
def next_day(date,dyy):
from datetime import datetime as dd
import datetime as d
a=d.datetime.today().strptime(date,'%Y-%m-%d')
b=dd.weekday(a) # d.weekday(a) = 0//b=0//'월요일'
dyy_b=''
for i in range(len(dy)): #7
if dy[i]==dyy: # i=2
dyy_b=i #dyy_b=2
break
c=i-b #2-0
return (a+d.timedelta(c))
print(next_day('2018-12-15','수요일'))
'python' 카테고리의 다른 글
30-1. 웹크롤링[텍스트] (0) | 2019.03.26 |
---|---|
29. 시간(localtime, strftime, localtime, datetimenow) (0) | 2019.03.26 |
27. 텍스트파일(read, readline, readlines, wrtie, writelines) (0) | 2019.03.26 |
26. lambda, map (0) | 2019.03.26 |
25. 문자코드값(ord, chr, eval) (0) | 2019.03.26 |