본문 바로가기
반응형

Python192

Python - 스플렁크(Splunk) Query 검색 Splunk 는 외부에서 손쉽게 쿼리 검색등 다양한 작업을 할 수 있도록 지원하고 있다. 그중 쿼리 검색에 대해서 알아보도록 하자. 먼저 Splunk 라이브러리 splunk-sdk를 설치하자. pip install splunk-sdk 이후 아래와 같은 코드를 통해 쿼리 검색이 가능하다. import splunklib.client as client # 스플렁크 연결 HOST = "splunk_host" PORT = 8089 USERNAME = "account_username" PASSWORD = "account_password" # 검색 쿼리 설정 SEARCH_QUERY = "search index=my_index | stats count by _time" # 스플렁크 연결 service = client... 2023. 9. 26.
Python - Regex 정규식 표현과 직접 함수 구현 성능 비교하기 timeit 정규식 표현에 re 라이브러리를 사용하는데, 어느정도 성능적인 이점을 가져가면서 사용할 수 있는지 확인하기 위해서 비교해보았다. import timeit import re # 정규식 사용 def find_strings_three_more_numbers(input_string): pattern = r'\D*\d\D*\d\D*\d\D*' matches = re.findall(pattern, input_string) return matches # 직접 구현 def has_three_more_numbers(input_string): num_count = 0 for char in input_string: if char.isdigit(): num_count += 1 if num_count >= 3: return T.. 2023. 9. 26.
Python - Microsoft 365 Defender Advanced hunting Query Microsoft 365 Defender Advanced hunting Query 에서 사용할 수 있는 Python 코드이다. mde_search 함수를 재활용해서, 입력한 값이 어떤 타입인지에 따라 검색하는 조건을 바꾸도록 설계되어 있다. import json import time import argparse import pandas as pd import logging import sys import os import re import validators import datetime import random import zipfile import urllib.parse from collections import OrderedDict from urllib3.util.retry import Retry i.. 2023. 9. 19.
Python - ImportError most likely due to a circular import 해결 ImportError: cannot import name 'xxx' from partially initialized module 'xxx' (most likely due to a circular import) 이 에러는 2가지 점의 주의 해서 보면 해결이 가능하다. 1. 양방향 참조 오류 첫번째로는 가장 많이 실수 할 수 있는 부분으로, 이중 호출이 되는지에 대한 부분이다. a 파일 에서 b 파일의 라이브러리에서 bbb 라는 함수를 import 했다고 보자. 그리고 b 파일에서 a 파일의 aaa 라는 함수를 import 할 경우 중복 호출로 오류가 나타날 수 있다. 양방향으로 서로간 참조는 불가능하니, 만약 공통 함수를 작성하였다면, 내부 다른 함수에서 서로간 참조하는지 확인하자. 2. 중복 이름 오류 .. 2023. 9. 18.
Python - str 공백을 제거하고 리스트로 변환하기(split, strip 혼용) Python에서 split를 통해 문자열을 기준값으로 만들어 리스트로 변환할때, 공백으로 인해 원하지 않는 결과가 발생하는 경우가 있다. 이때 strip으로 해소가 가능한데, 가장 쉽게 split 이후 strip을 사용할 수 있도록 되어 있으면 좋지만, 현재 버전 3.10 이하에서는 지원하지 않기 때문에, 다음과 같은 지능형 리스트 생성 방법을 이용하면 쉽게 해소 할 수 있다. def make_str_to_list(str_list): make_list = [new_item.strip() for new_item in str_list.split(',')] return make_list 위 코드는 문자열로 받은 값을 리스트로 생성할때, strip을 마지막에 걸어서 생성해주는 조건이다. 만약 예제를 통해 확인한.. 2023. 8. 9.
Pandas - 엑셀(Excel) 파일 JSON(Dict)로 변환하기 Pandas를 통해서 엑셀 내용을 프로그램적으로 처리하기 용이한 JSON(dict) 구조로 쉽게 변환이 가능하다. 만약 아래와 같은 데이터가 존재한다고 가정하자. 위 문서를 pandas에 존재하는 read_excel을 통해 읽어 드릴 수 있다. 그리고 to_json()을 통해서 진행해보자. import pandas excel_df = pandas.read_excel('test.xlsx', sheet_name='Sheet1') json_str = excel_df.to_json() print('Excel to JSON:\n', json_str) 실행 내용을 확인해 보면, 세로(행)컬럼 기준으로 구분된 것을 알 수 있다. 이를 가로(열) 기준으로 변경해보자. orient='records' 를 to_json().. 2023. 8. 2.
VSCode - pylint torch등 no member 오류 해결 torch has no member 로 torch 사용에 이상이 없는데, 계속 빨간 오류가 거슬려서 확인해본 결과 Pylint에 --generate-members 옵션을 추가하면 된다. 추가하는 방법은, 톱니 바퀴를 누루고 Settings 를 통해 세팅 화면으로 이동하도록 하자. 이후 Setting 검색창에 pylint를 검색하면, Args를 추가할 수 있는 메뉴가 나타난다. 여기에 --generate-members 을 추가하여 Add를 누르고 다시 시작하면, torch에서 나타나던 오류 메세지가 사라지게 된다. 이를 통해 pylint가 제대로 사용자 정의 객체를 탐색하지 못하면서 발생하는 이슈를 해결 할 수 있다. 2023. 7. 31.
Pandas - 날짜 기준 정렬하기 Panda는 날짜 데이터 기준으로 정렬하는 함수를 제공하는데, 바로 sort_values 이다. 사용 방법은 다음과 같다. df = pd.DataFrame(dict_list) df.sort_values(by='date', inplace = True, ascending=False) inplace 는 현재 데이터프레임의 데이터를 변경하겠다는 의미이다. 만약 False 설정하면 별도의 데이터프레임을 선언해서 데이터를 저장해야 한다. ascending을 False로 할 경우 최신 날짜가 인덱스 최상단이 되고, True이면 반대로 최신 날짜가 가장 마지막에 인덱스 된다. by 는 현재 인덱스중 사용할 인덱스의 이름을 뜻한다. dict_list라면 key 값을 의미한다. 2023. 7. 26.
Pandas - Excel 저장, 시트(Sheet)별 저장하기 Pandas를 통해 Excel을 작성하는 경우 유용한 옵션 몇가지를 정리해 본다. Pandas는 기본적으로 배열 형태의 List구조도 가능하지만, Dict(딕셔너리) 형태의 데이터를 List로 구성한 경우 Column으로 같은 Key 데이터를 만들 수 있어, 이를 활용하여 엑셀로 저장하는데 유용하다고 할 수 있다. Excel로 저장하기 >>> import pandas as pd >>> >>> >>> dict_list = [{'name':'han','age':'10','loc':'seoul'},{'name':'kim','age':'14','loc':'busan'},{'name':'lee','age':'12','loc':'iksan'}] >>> df = pd.DataFrame(dict_list) >>> wi.. 2023. 7. 26.
반응형