728x90
https://myinbox.tistory.com/111
기존에는 파워쉘로 파일 다운로드 검증을 했는데
아래와 같은 문제가 있었다
* V3에서 바이러스로 오인하여 실행 안됨
* 제품 개수가 늘어나면 ps1 파일 많아짐
* 가끔 다운로드 중 오류 발생하여 배치 실행 종료
그래서 파이썬으로 다시 만들었다
파일 한 개로 관리하고 실행할 때 다운로드 제품을 선택하게 했다
import requests #다운로드
from win32com.client import Dispatch # 파일속성
import os
import shutil
import sys #종료함수
def test1():
folder_name = 'test1'
url_dict = {
"test1.EXE": "https://.....EXE", #주소 편집 필요
}
return folder_name, url_dict
def test2():
folder_name = 'test2'
url_dict = {
"test2.EXE": "https://.....EXE", #주소 편집 필요
}
return folder_name, url_dict
########## 분기 ###############
print('''
다운로드할 제품을 선택하세요 (범위 벗어나면 종료)
1 : test1
2 : test2
''')
x = input()
if x == '1':
folder_name, url_dict = test1()
elif x == '2':
folder_name, url_dict = test2()
else:
sys.exit()
########### 공통 부분 ###############
for filename, url in url_dict.items():
# 다운로드
# 일반적으로 이렇게 쓰면 되지만 대용량 다운로드시 메모리 오류 발생하여 주석 처리
# r = requests.get(url)
# with open(filename, 'wb') as f:
# f.write(r.content)
# 대용량 파일 다운로드시 chunk 사용
# verify : 일부 사이트는 https 유효성 검사 안해야 다운로드 가능
r = requests.get(url, stream=True, verify=False)
with open(filename, "wb") as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
# 속성에서 버전 정보 가져오기
ver_parser = Dispatch('Scripting.FileSystemObject')
version = ver_parser.GetFileVersion(filename)
# 파일명에 버전 추가
filename2 = version + '_' + filename
# 폴더 없으면 새로 생성
if not os.path.isdir(folder_name):
os.makedirs(folder_name)
# 하위 폴더로 이동시키기
subpath_filename2 = folder_name + '\\' + filename2
shutil.move(filename, subpath_filename2)
728x90
'기타' 카테고리의 다른 글
flow 에서 말일 체크 (0) | 2020.04.20 |
---|---|
온라인 앱 테스트 (0) | 2020.04.08 |
Postman 으로 api 검증해보기 (0) | 2019.05.24 |
VS Code + GitHub 연동 (0) | 2019.02.12 |
서버 hosts 변경으로 모바일 웹 검증 (0) | 2018.09.12 |