don't stop believing

blockchain 테스트에 사용한 python 함수 - saveResultData 본문

Python/Basic

blockchain 테스트에 사용한 python 함수 - saveResultData

Tongchun 2018. 12. 17. 17:35

blockchain 테스트에 사용한 python 함수를 설명합니다.

  • getDateStrings - 날짜 - 년, 월, 일, 시, 분, 초를 확인하는 함수입니다.
  • getLogfileNameWithPath - 로그 기록을 위해 폴더를 생성하고 경로를 반환합니다.
  • getRequestId - ramdom으로 숫자를 반환합니다.
  • moveFile - 특정 파일을 로그 폴더로 이동시킵니다.
  • saveResultData - 데이터를 파일에 저장합니다.
  • convertToHex - String을 hex로 변환합니다.
  • leftPad64 - 왼쪽에 (또는 오른쪽에) 0을 채워 고정된 길이로 만듭니다.
  • getTestConfig - json 형태의 config 파일을 만들고 불러옵니다.
  • waitingCount - time.sleep() 할 때 동적으로 카운트를 셉니다.
  • callRPC - requests 모듈을 사용해 http API를 호출합니다.
  • callWS - websocket 모듈을 사용해 API 통신을 합니다.


API call에 대한 response 데이터가 엄청나게 많은 경우가 있습니다.

많게는 30M가 넘는 경우도 있는데 이걸 파일로 저장하는 함수를 만들었습니다.

# coding=utf-8
import pathlib

class nGleUtils():

	def saveResultData(self, logPath, fileName, data):
		'''
		blockdump와 같이 result값이 큰 경우 별도 파일에 저장합니다.
		'''

		# 로그 경로를 확인하고 없다면 만들어 줍니다.
		pathlib.Path(logPath).mkdir(parents=True, exist_ok=True)

		# 저장할 파일의 전체 경로와 파일명을 지정합니다.
		filePath = F"{logPath}/{fileName}"

		# 지정된 파일에 데이터를 저장합니다.
		with open(filePath, 'wt') as f:
			f.write(F"{data}")



if __name__== "__main__":
	ngle = nGleUtils()

	responseData = "......" # 엄청나게 많은(사이즈가 큰) json 데이터
	ngle.saveResultData('./reports/20181217152815', 'result.json', responseData)


내용은 간단합니다.

saveResultData 함수는 데이터를 받아 파일로 저장합니다.

저장할 폴더가 없다면 만들어 줍니다.

pathlib.Path(logPath).mkdir(parents=True, exist_ok=True)


저장할 경로를 정의하고,

filePath = F"{logPath}/{fileName}"


파일을 열고 저장해 줍니다.

with open(filePath, 'wt') as f:

f.write(F"{data}")


try except를 사용할만도 한데 급한데로 먼저 쓰고 에러가 나면 만들자고 했지만... 에러가 발생하지는 않았습니다.

그래서 return 값도 없는 그냥 일반적인 파일 쓰기 함수가 돼버렸네요.



Comments