글
[파이썬] glob, os 정리, 폴더(dir) 그리고 파일 다루기
directory 만들고 지우기, 파일 이름 검색하기 등등 dir과 파일에 관련된 코딩이 필요할 때 glob와 os에 대하여 정리합니다.
우선 아래 두 패키지를 import 합니다.
import os
import glob
0. 현재 폴더 위치 얻기
cwd = os.getcwd()
윈도우와 리눅스를 구분하는 방법으로 \\가 있는지 확인하면 됩니다.
if "\\" in cwd :
print('win')
1. 폴더(directory) 만들기
원하는 이름의 dir를 만듭니다. 전략 실행하는 중에 매매와 상태에 대한 정보를 저장하여야합니다. 간단하게 파일을 사용할 수도 있고 DB를 사용할 수 있습니다. 우선 간단하게 파일을 사용합니다. 전략별로 혹은 일자별로 별도의 홀더를 만들어서 관리하면 좋을 것 같습니다. 따라서 필요한 이름으로 폴더를 만들 필요가 있습니다.
폴더를 만드는 방법은 간단합니다.
os.mkdir('.\\test')
2. 폴더(directory) 지우기
일자가 지나면 기존 전략으로 생성한 폴더를 지워야하는 경우가 있습니다. 이를때는 rmdir를 사용합니다 단 rmdir()을 사용하기 전에 해당 폴더는 비워져있어야 합니다.
rmdir('.\\test')
3. 파일명 검색하기
특정 폴더에 있는 파일명을 검색해봅시다. 프로그램이 비정상적으로 종료가 된 후 다시 시작할 때 기존 매매 상태로 복귀를 하여야 합니다. 이때 전략 실행 중 상태 값을 저장한 파일을 읽어서 이전과 같은 상태로 만들어야 합니다.
예를들어 .\\working 폴더에 아래와 같은 상태 정보가 저장되어 있다고 가정해봅시다.
우리가 해야할 일은 여기에 있는 파일 명을 list로 받아서 각 파일을 읽은 후 해당 ticker의 상태 값을 읽어야 합니다. 이때 사용할 함수는 glob.glob입니다. filter에 들어갈 적절한 문자열을 결정해서 전달하면 됩니다.
def get_filenames() :
files = []
filter = '.\\working1\\' + '*_order_status.txt'
for filename in glob.glob(filter):
files.append(filename)
for fname in files :
print (fname)
return files
이 코드를 실행하면 아래과 같이 working에 있는 파일명 list를 받을 수 있습니다. 파일명에 있는 ticker 정보를 바탕으로 해당 ticker의 상태 정보를 update하면 됩니다.
4. 파일 지우기
트레이딩이 끝나면 중간에 발생한 파일을 지워야 하는 경우가 있습니다. 특히 일 단위로 정산을 하는 경우에는 동작 중 발생한 파일을 반드시 지워야합니다.
3번에서 설명한 파일명 검색 후에 원하는 파일을 지우는 예제입니다. 아래 예제에서는 'BCH'를 가진 파일을 지웁니다.
filter = '.\\working1\\' + '*_order_status.txt'
for filename in glob.glob(filter):
if filename.find('BCH') >= 0 :
os.remove(filename)
이 코드를 실행한 결과입니다. 'BCH'를 가진 파일만 지웠습니다.
'파이썬' 카테고리의 다른 글
[파이썬] 파이썬을 이용하여 날짜/시간 다루기 (0) | 2022.01.14 |
---|---|
[파이썬] 시간 다루기 (0) | 2020.12.27 |
[파이썬] 텔레그램봇 이용한 시세 봇(1) (2) | 2020.07.17 |
[파이썬] Selenium Webdriver, 셀레니움 웹드라이버를 이용하여 웹페이지 동작시키기 (0) | 2020.07.08 |
[파이썬] 일정시간 입력이 없으면 자동으로 돌아오는 입력, input (0) | 2020.05.31 |