일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- selenium
- 날짜 정규식
- pywinauto 윈도우제어
- 파이썬 가상환경 설치방법
- UiPath
- Element is not clickable at point
- 네이버 로그인 캡챠해결
- 가상환경설치
- 네이버매물크롤링
- 네이버부동산크롤링
- vscode venv 설치
- uipath 입문
- pycdas.exe
- pywinauto 윈도우
- 파이썬 네이버 로그인
- pycdc.exe
- Uipath 설치방법
- 파이썬 환경설정
- 파이썬 가상환경 설치
- Python
- Uipath 기초
- 왕초보 파이썬 실행
- 네이버 로그인 하기
- 커머스API
- 네이버 로그인 영수증 해결
- venv 설치
- Selenium 셀렉터잡기
- 네이버커머스API
- 파이썬네이버부동산
- pywinauto
- Today
- Total
목록프로그래밍 (348)
콘솔워크
def get_download_file(download_folder): extension = ".xlsx" filename = "itemscout_io" excel_files = glob.glob(f"{download_folder}/{filename}*{extension}") print(excel_files) download_file = max([f for f in excel_files], key=os.path.getctime) return download_file
import win32com.client as win32 def xls_to_xlsx(source): if not str(source).find("xls") > -1: return excel = win32.Dispatch("Excel.Application") # excel = win32.gencache.EnsureDispatch("Excel.Application") wb = excel.Workbooks.Open(source) xlsx_file = source + "x" if os.path.isfile(xlsx_file): os.remove(xlsx_file) wb.SaveAs(xlsx_file, FileFormat=51) # FileFormat = 51 is for .xlsx extension wb.Cl..
def get_first_text_in_brackets(text: str): result = "" bracket_pattern = r"\[([^]]+)" result = re.findall(bracket_pattern, text) try: result = result[0] except: pass return result
원래 pyinstaller로 빌드하면 아이콘 (ico) 형식의 이미지만 넣을 수 있다. 하지만 이미지가 너무꺠진다. 이럴 때는 --noupx 옵션을 주어 이미지가 축소되지 않는 것을 넣어준다. 해당 프로젝트에는 Piilow 라이브러리가 설치되어 있어야 한다. pip install Pillow png 형식의 이미지를 넣으려면 아래 형식으로 넣으면 된다. pyinstaller -n "[파일명]" -w --onefile --clean "main.py" --icon "[이미지주소]" --noupx EX) pyinstaller -n "sample file v1.0.0" -w --onefile --clean "main.py" --icon "assets\image.png" --noupx
우선 프로젝트를 몰아넣고 싶은 빈 프로젝트를 하나 생성하고 github에 연결한다. 그 후 연결되어있는 프로젝트 안에서 아래와 같은 명령어 입력 git subtree add --prefix="이름설정" 주소 브런치명 복사하고자 하는 repository가 최신 상태가 아니면 Working tree has modifications. Cannot add. 오류가 발생하기 때문에 최신화 해둘 것. 로컬에 프로젝트가 복사된 것이 확인되었다면 그대로 git push
1. json.dumps() import json my_dict = {"name": "John", "age": 30} my_str = json.dumps(my_dict) print(my_str) # '{"name": "John", "age": 30}' 2. str my_dict = {"name": "John", "age": 30} my_str = str(my_dict) print(my_str) # "{'name': 'John', 'age': 30}" 3. pprint().pformat() import pprint my_dict = {"name": "John", "age": 30} my_str = pprint.pformat(my_dict) print(my_str) # 출력 결과: # {'age': 30, ..
def df_to_excel(self, dtos): try: excel = os.path.join('filename.xlsx') if os.path.isfile(excel): with pd.ExcelWriter(bid_notice_excel, engine="openpyxl", mode="a", if_sheet_exists="replace") as writer: pd.DataFrame.from_dict(dtos).to_excel(writer, sheet_name='sheet_name2', index=False) else: with pd.ExcelWriter(excel, engine="openpyxl") as writer: pd.DataFrame.from_dict(dtos).to_excel(writer, s..
import numpy as np # 입력 배열 생성 arr = np.array([1, 2, 3, 4, 5]) # 특정 값 더하기 add_value = 10 arr = arr + add_value # 결과 출력 print(arr) 모든 값에 10씩 더해진다.
import os filename = 'file.txt' # 생성하려는 파일명 counter = 0 # 파일명 뒤에 붙일 숫자 초기값 while True: if not os.path.exists(filename): # 파일명이 이미 존재하지 않는 경우 break # 반복문 종료 counter += 1 # 파일명 뒤에 붙일 숫자 증가 filename = f'file_{counter}.txt' # 파일명에 숫자를 붙여서 새로운 파일명 생성 with open(filename, 'w') as file: file.write('Hello, world!') # 파일 생성 후 내용 쓰기 zfill 함수를 사용한다면 더욱 깔끔한 넘버링이 가능하니 취향껏 사용해도 좋음
현재 로컬 버전과 원격 버전이 동일한 경우 git pull을 사용하면 'Already up to date' 라는 메시지가 나오게 된다. 그 상태에서 코드를 약간 수정하다가 다시 원격에 있는 상태를 그대로 가져오고 싶었던 적이 있었을 때, 아래와 같은 명령어를 사용했다. # 로컬 변경 내용을 stash에 저장 $ git stash # 원격 저장소의 최신 변경 내용 가져오기 $ git pull # stash에 저장한 변경 내용 복원 $ git stash pop stash에 임시로 내용을 저장한 후, git pull 명령어로 원격의 내용을 불러온 것.
# 반복문 안에서 여러 개의 배열을 생성하는 예시 for i in range(3): # 각 배열에 다른 이름을 부여하여 생성 locals()[f'array_{i}'] = [] # locals() 함수를 사용하여 현재 로컬 스코프에 변수를 동적으로 생성 # 배열에 원하는 데이터를 추가 locals()[f'array_{i}'].append(i) # 생성된 배열 확인 print(array_0) # 출력: [0] print(array_1) # 출력: [1] print(array_2) # 출력: [2] locals() 함수를 사용하여 현재 로컬 스코프에 변수를 동적으로 생성할 수 있다. 이렇게 생성된 배열은 현재 스코프에서만 사용이 가능하다.
import pandas as pd # DataFrame 생성 예시 data = {'col1': [1, 2, 3], 'col2': ['a', 'b', 'c']} df = pd.DataFrame(data) print(df) # 특정 열의 정보를 배열로 받는 코드 col_name = 'col1' # 받고자 하는 열의 이름 col_array = df[col_name].values # Series 객체에서 values 속성을 이용하여 배열로 변환 print(col_array) 결과물만을 빠르게 배열로 받아내기 위해서 사용한 방법
import sys sys.setrecursionlimit(5000) def my_recursive_function(n): if n == 0: return my_recursive_function(n-1) my_recursive_function(4999) 기본 재귀 깊이는 1000이고 해당 코드에서는 최대 재귀 깊이를 5000으로 설정하였다.
import os import time # 10초 대기 time.sleep(10) # 컴퓨터 종료 명령어 실행 os.system("shutdown /s /t 1") /s 옵션은 컴퓨터를 종료하고 /t 옵션은 명령어를 실행하기 전 대기시간을 나타냄. 위 코드에서는 1초를 대기하고 종료
import pandas as pd import io import win32clipboard win32clipboard.OpenClipboard() clipboard_data: str = win32clipboard.GetClipboardData() win32clipboard.CloseClipboard() df_clipboard = pd.read_csv(io.StringIO(clipboard_data), delimiter="\t", header=None) clipboard_list = df_clipboard[0].values print(clipboard_list)
import re html_text = "안녕하세요. 파이썬입니다." text = re.sub('
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton from PyQt5.QtCore import QObject, pyqtSignal class MyWindow(QMainWindow): def __init__(self): super().__init__() # 버튼 생성 self.button1 = QPushButton("Button 1", self) self.button2 = QPushButton("Button 2", self) # 버튼 위치 조정 self.button1.move(50, 50) self.button2.move(150, 50) # 버튼 클릭 시그널에 함수 연결 self.button1.clicked.connect(self.onB..
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--disable-popup-blocking') driver = webdriver.Chrome(options=options) 해당 옵션을 추가함
import openpyxl # 엑셀 파일 열기 workbook = openpyxl.load_workbook("example.xlsx") # 시트 선택 ws = workbook.active # 27열 17행 셀 내용 변경 ws.cell(row=17, column=27).value = "새로운 내용" # 변경된 내용 저장 workbook.save("example.xlsx")
import pandas as pd # 빈 DataFrame 생성 columns = ['col1', 'col2'] df = pd.DataFrame(columns=columns) # 새로운 데이터를 담고 있는 리스트 new_data_list = [ {'col1': 'value1', 'col2': 'value2'}, {'col1': 'value3', 'col2': 'value4'}, # ... ] # 반복문을 이용해 데이터를 추가 for new_data in new_data_list: df = df.append(new_data, ignore_index=True) # DataFrame을 csv 파일로 저장 df.to_csv('file.csv', index=False) 반복문을 돌며 자료를 append 하는 방..
from docx import Document from docx.shared import RGBColor document = Document() # 문자열 생성 text = "이 문장에서는 특정 문자열만 빨간색으로 표시합니다." # 문서에 텍스트 추가 paragraph = document.add_paragraph() # 텍스트를 런 객체로 분리 runs = [] for word in text.split(): run = paragraph.add_run(word + " ") if "특정" in word: font = run.font font.color.rgb = RGBColor(255, 0, 0) # 빨간색으로 설정 runs.append(run) # 워드 파일 저장 document.save('example...
a = [1, 2, 3, 4, 5] b = [3, 4, 5, 6, 7] result = list(set(a) - set(b)) print(result) # [1, 2]
my_str = '첫번째>두번째>세번째' my_str_list = my_str.split('>') last_str = my_str_list[len(my_str_list) -1] print(last_str)
참고자료 https://en.wikipedia.org/wiki/Software_versioning Software versioning - Wikipedia From Wikipedia, the free encyclopedia Giving a unique identifier to each software update Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software. Within a given version num en.wikipedia.org Version 일반적으로 배포되는 프로그램에는 각각의 버전이 존재하..
import urllib.request some_string = driver.find_element(By.CSS_SELECTOR, 'selector') some_string = urllib.parse.unquote(some_string) urllib의 기능을 사용하면 온전한 한글형태를 가져올 수 있다.
# 메모장 저장 def sentence_to_txt(self, file_name: str, sentence: str): save_path = os.path.join(self.guiDto.convert_path, f"폴더이름") if os.path.isdir(save_path) == False: os.mkdir(save_path) else: pass sentence_txt = os.path.join(save_path, f"{file_name}.txt") with open(sentence_txt, "w", encoding="utf-8") as f: f.write(sentence) self.log_msg.emit(f"{file_name}.txt 저장 완료")
import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie', 'Dave'], 'age': [25, 30, 35, 40], 'gender': ['F', 'M', 'M', 'M'] } df = pd.DataFrame(data) print(df) new_df = df[['name', 'age']] print(new_df) 그냥 별거없음... 열 이름만 지정해주면 됨...
# 공통 로딩화면 def wait_loading(self): driver = self.driver # $x('//div[contains(@class, "blockUI")]') loading = True wait_count = 1 self.maximum_wait = 60 self.default_wait = 10 driver.implicitly_wait(1) try: loading_screen = driver.find_element(By.XPATH, '//div[contains(@class, "blockUI")]') except Exception as e: print(f"loading finished") driver.implicitly_wait(1) while loading: try: print(f"wait..