Programming/Python

Programming/Python

[Python] google images download 이용하여 구글 검색 이미지 저장하기

자신의 크롬 버전에 맞는 chromedriver 를 다운로드 해주고, 아래와 같이 git clone 하여 google images download 프로젝트 다운로드 한 뒤 사용하면 된다. $ git clone https://github.com/ultralytics/google-images-download $ cd google-images-download $ python3 bing_scraper.py --search 'cat' --limit 10 --download --chromedriver ./chromedriver 참고로 chromedriver 다운로드는 아래에서 하면 된다. https://chromedriver.chromium.org/downloads ChromeDriver - WebDriver fo..

Programming/Python

[Python] Ubuntu 18.04 에서 Python3.5 빌드하여 설치하기

1. 필수 패키지 설치 1 apt-get install libssl-dev apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libsqlite3-dev 위와 같이 필요한 패키지를 설치하고 파이썬을 설치해야 정상 설치가 된다. 1-1. 필수 패키지 설치 2 sudo apt-get install libssl1.0 필자는 추가로 위 패키지도 설치해주었다. 위 패키지를 설치하지 않고 파이썬을 설치하고나서 pip 를 설치할 때 자꾸 아래와 같은 에러가 발생한다. 이것 때문에 2시간 삽질함, 아래는 삽질 기록이다. ~$ curl https://bootstrap.pypa.io/get-pip.py | python3.5 % Total % Rece..

Programming/Python

[Python] argparse(Argument Parser) 에서 boolean 값 받기

아래와 같이 str2bool 함수를 구현하여 argparse 에서 boolean 값을 받아올 수 있다. def str2bool(v): if isinstance(v, bool): return v if v.lower() in ('yes', 'true', 't', 'y', '1'): return True elif v.lower() in ('no', 'false', 'f', 'n', '0'): return False else: raise argparse.ArgumentTypeError('Boolean value expected.') import argparse if __name__ == "__main__": parser = argparse.ArgumentParser(description='test') parse..

Programming/Python

[Python] pytube 이용하여 Youtube 영상 저장하기

1. pytube 설치하기 python3 -m pip install --upgrade "git+https://github.com/nficano/pytube.git" 2. 코드 실행하기 참고로 유튜브 링크는 원하는 유튜브 영상을 켠 뒤 주소 창에서 긁어오면 된다. import os import pytube # pip install pytube from pytube.cli import on_progress url = "유튜브 링크" yt = pytube.YouTube(url, on_progress_callback=on_progress) print(yt.streams) save_dir = "./" # 저장경로 yt.streams.filter(progressive=True, file_extension="mp4"..

Programming/Python

[Python] GPU 지정하여 Python 코드 실행하기

가끔 GPU를 나눠 할당하여 코드를 실행하고 싶을 때가 있는데 아래와 같이 간단히 설정 가능하다. 애용하는 방법이다. Terminal에서 python 코드를 실행하는 경우 ~$ CUDA_VISIBLE_DEVICES=0 python test.py ~$ CUDA_VISIBLE_DEVICES=1 python test.py ~$ CUDA_VISIBLE_DEVICES=2,3 python test.py python 코드에서 GPU 지정하는 방법 import os os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"]="0" 참고자료 : dongjinlee.tistory.com/entry/%EC%84%A0%ED%83%9D%ED%9..

Programming/Python

[Python] 파일명 추출, 디렉토리 경로 추출

파일 목록 얻기 glob.glob(wildcard) - 유닉스 경로명 패턴 스타일로 파일 목록을 얻을 수 있다. os.listdir(path) - 지정된 디렉토리의 전체 파일 목록을 얻을 수 있다. dircache.listdir(path) - os.listdir(path)와 동일한 파일 목록을 전달한다. path가 변경되지 않았을 때, dircache.listdir()은 다시 디렉토리 구조를 읽지 않고 이미 읽은 정보를 활용 dircache.annotate(head, list) - 일반 파일명과 디렉토리명을 구분해주는 함수 디렉토리 다루기 os.chdir(path) - 작업하고 있는 디렉토리 변경 os.getcwd() - 현재 프로세스의 작업 디렉토리 얻기 os.remove( filename or pat..

Programming/Python

[Python] Python Schedule 모듈 이용하여 원하는 시간대에 프로그램 실행 시키기

프로그램을 주기적으로 자동으로 돌려놔야 할 일이 생겨서 아래와 같이 Python Schedule 모듈을 이용하여 원하는 시간대에 프로그램을 실행시키도록 하였다. import schedule import time def job(): #TO DO ... # 10초에 한번씩 실행 schedule.every(10).second.do(job) # 10분에 한번씩 실행 schedule.every(10).minutes.do(job) # 매 시간 실행 schedule.every().hour.do(job) # 매일 10:30 에 실행 schedule.every().day.at("10:30").do(job) # 매주 월요일 실행 schedule.every().monday.do(job) # 매주 수요일 13:15 에 실행 ..

Programming/Python

[Python] Why time.time() gives 0.0?

You could use timeit.default_timer instead of time.time. timeit.default_timer will choose the best timer (time.time, time.clock or time.perf_counter) for your system. The resolution of the timer isn't unlimited; it goes up by small amounts periodically. If the two calls are close enough together, you will see a zero value. If you tried a large number of such calls, you would probably find that t..

Programming/Python

[Python] Import 는 꼭 맨 윗줄에 써야하는가?

Python 내부에서는 모듈을 import 하는 함수를 여러번 실행하더라도 모듈은 한번만 Import 되기 때문에 사실상 어디서 하던 상관 없다고 한다. 심지어 함수 안에서 모듈을 import 하는 것이 실행속도가 더 빠르다고 한다. 왜냐하면 맨 위에서 컴파일하면 LOAD_GLOBAL 하는 반면, 함수 안에서는 LOAD_FAST 하기 때문에 함수 안에서 Import 하는 것이 더 빠르다고 한다. 그럼에도 불구하고 맨 위에 모듈을 import 하는 이유는 Python 스타일 가이드가 그렇게 쓰라고 권장했기 때문이다. 맨 위에서 import 하는 경우 import random def f(): L = [] for i in xrange(1000): L.append(random.random()) for i in ..

Programming/Python

[Python] 파일 읽고 쓰기

1. 파일 생성하기 f = open("새파일.txt", 'w') f.close() 파일 열기 모드 r 읽기모드 - 파일을 읽기만 할 때 사용 w 쓰기모드 - 파일에 내용을 쓸 때 사용 a 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용 2. 파일을 쓰기 모드로 열어 출력값 적기 # writedata.py f = open("C:/doit/새파일.txt", 'w') for i in range(1, 11): data = "%d번째 줄입니다.\n" % i f.write(data) f.close() 3. 파일 읽기 3.1 readline() # readline_all.py f = open("C:/doit/새파일.txt", 'r') while True: line = f.readline() if not..

Programming/Python

[Python] Anaconda 가상환경에서 spyder 실행하기 (Windows)

Windows 환경에서 Anaconda 가상환경을 생성하고, 가상환경 내부에서 spyder 를 실행하는 방법은 아래와 같다. 1. python 3.6 버전의 아나콘다 가상환경 생성 $ conda create -n myenv python=3.6 2. 가상환경 실행 $ activate myenv 3. 가상환경에 spyder 설치 $ conda install spyder 4. spyder 실행 $ spyder 5. Spyder 에서 python 동작 환경 확인하기 import sys print(sys.executable) 결과는 아래와 같다. print(sys.executable) C:\Users\name\Anaconda3\envs\myenv\pythonw.exe 6. Anaconda spyder 를 설치하였..

Programming/Python

[Python] 파일 존재 유무 검사

import os.path file = 'test.txt' if os.path.isfile(file): print("Yes. it is a file") esif os.path.isdir(file): print("Yes. it is a directory") esif os.path.exists(file): print("Something exist") else : print("Nothing") 참고자료 : https://wikidocs.net/14304 불러오는 중입니다...

Programming/Python

[Python] 필요 패키지 목록 requirements.txt 만들고, 설치하기

필요한 패키지 목록 만들기 (현재 환경에 깔려있는 패키지들을 모두 출력해줌) $ pip freeze > requirements.txt 필요한 패키지 설치하기 $ pip install -r requirements.txt

Programming/Python

[Python] Python -m 의 의미

파이썬에서 모듈을 실행한다는 뜻 보통 아래와 같이 pip 를 python3 또는 python2 에서 적절하게 실행하고자 할 때 사용함 python2 -m pip install pycrypto python3 -m pip install pycrypto 참고자료 1 : 파이썬 모듈 설치하기 https://docs.python.org/ko/3/installing/index.html 파이썬 모듈 설치하기 — Python 3.7.4 문서 파이썬 모듈 설치하기 이메일 distutils-sig@python.org 널리 사용되는 공개 소스 개발 프로젝트로서, 파이썬에는 적극적으로 지원하는 기여자와 사용자의 커뮤니티가 있어, 자신들의 소프트웨어를 공개 소스 라이센스 계약에 따라 다른 파이썬 개발자가 사용할 수 있도록 합니..

Programming/Python

[Python] 구글 이미지 크롤링 하기

인스타그램으로 크롤링 하기 이외에도 구글 이미지를 크롤링 할 수 있다. 개인적으로 해시태그를 통해서 크롤링 하는 방법은 네거티브 이미지가 너무 많이 포함되어있기 때문에 비추, 구글 이미지는 자신이 원하는 검색어의 조합을 통해 크롤링 하기 때문에 마음에 드는 이미지가 다수 포함될 수 있다는 장점이 있다. 하지만 한번에 100개 까지 밖에 수집이 안되는 듯 하다. 1. 설치하기 https://google-images-download.readthedocs.io/en/latest/installation.html $ pip install google_images_download $ git clone https://github.com/hardikvasa/google-images-download.git $ cd go..

Programming/Python

[Python] 인스타그램으로 크롤링하기

도메인에 알맞는 자신만의 데이터 세트를 만들기 위해서는 공개된 데이터 세트를 이용할 수 도 있지만, 추가적으로 인스타그램에 떠돌아다니는 이미지를 수집하여 저장할 수 있다. 인스타그램 크롤러를 통해서 이미지를 수집하는 것은 인스타그램 자체에서 속도를 제한시켜놓았기 때문에 1000장 이상 모으고자 할 경우, 상당히 느리게 수집된다는 단점이 있다. 또한 한 해쉬태그 당 최대 10000장 까지만 수집이 가능하다. https://github.com/huaying/instagram-crawler huaying/instagram-crawler Get Instagram posts/profile/hashtag data without using Instagram API - huaying/instagram-crawler g..

Programming/Python

[Python] Python 심볼릭 링크 설정

Python 은 버전 관리 하는 것이 필수이다. 나중에 Python Dependency 가 꼬여버리면 컴퓨터를 포맷하거나 일일히 꼬인 링크들을 제거해줘야하는 번거롭고 끔찍한 일이 발생한다. pip 도 마찬가지이다. 아래와 같이 각 버전을 확인해보길 바란다. $ pip -V $ pip2 -V $ pip3 -V $ python -V $ python2 -V $ python3 -V 리눅스에서 파이썬이 기본적으로 설치가 되어있지만, 원하는 버전이 있을 경우에 특별한 버전의 파이썬을 설치하고 그것을 주로 사용하기 위해서는 "심볼릭 링크" 를 설정해줘야한다. 가령 python test.py 를 실행하였을 때 python 기본 심볼릭 링크가 /usr/bin/python 이 /usr/bin/python2.7 을 가리키고..

Programming/Python

[Python] 모듈 가져오기

Python 에는 모듈을 가져오는데 두 가지 방법이 있다. import module from module import variable, function from module import * 모듈을 지우는 방법도 있다. del module 다시 불러오는 방법도 있다. reload(module) 참고자료 : https://wikidocs.net/77 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net

Programming/Python

[Python] 자료형(type) 확인과 numpy 데이터 형변환

일반적인 파이썬 자료형 확인은 type() 함수를 이용하여 데이터 타입을 확인하고, 파이썬에 내재되어있는 numpy 모듈의 데이터 형변환 방법은 이와는 약간 다르다. 먼저 일반적인 파이썬 자료형 확인 방법은 다음과 같다. Python 자료형 확인 Python 3.x 버전의 경우 int print(type(123)) # float print(type(12.3)) # string print(type('123')) # print(type('안녕')) # print(type(u'안녕')) # * python 3 에서는 문자열이 항상 유니코드로 처리되서 u 표기 필요 없음 list print(type([])) # print(type([1, 2, 3, 4, 5])) # dictionary print(type({})..

Programming/Python

[Python] ldconfig

ldconfig 정의 ldconfig는 runtime때 여러 위치에 존재하는 shared object, 쉽게말해 동적 라이브러리를 연결해주는 dynamic linker를 설정하는 command이다. 즉, 자신이 사용중인 머신에 새로운 library를 설치한 후 머신이 인식하기 위한 dynamic linking table을 업데이트 해준다. 여기서 runtime dynamic linker는 /lib/ld.so 이고, 어떤 shared object가 필요한지는 실행파일이 알려준다. ldd /bin/ls 을 실행해보면 ls가 동작하기위해 필요한 so들 목록이 나오고, 해당 so파일을 어느 경로에 있는걸 가져올껀지도 보여준다. /etc/ld.so.conf는 이 경로를 지정해주는 설정파일. 출처 : http://..

꾸준희
'Programming/Python' 카테고리의 글 목록