일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬 가상환경 설치
- 네이버매물크롤링
- uipath 입문
- venv 설치
- 날짜 정규식
- Element is not clickable at point
- Python
- 파이썬네이버부동산
- Selenium 셀렉터잡기
- pywinauto
- 가상환경설치
- 왕초보 파이썬 실행
- pywinauto 윈도우
- 네이버 로그인 하기
- vscode venv 설치
- Uipath 기초
- pycdc.exe
- 네이버 로그인 영수증 해결
- 커머스API
- 파이썬 환경설정
- Uipath 설치방법
- pycdas.exe
- 네이버 로그인 캡챠해결
- selenium
- 네이버부동산크롤링
- 네이버커머스API
- UiPath
- 파이썬 가상환경 설치방법
- 파이썬 네이버 로그인
- pywinauto 윈도우제어
- Today
- Total
목록프로그래밍/python (267)
콘솔워크
원래 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
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 함수를 사용한다면 더욱 깔끔한 넘버링이 가능하니 취향껏 사용해도 좋음
# 반복문 안에서 여러 개의 배열을 생성하는 예시 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)
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..
QPlainTextEdit 순수하게 시스템 문자열만 입력 가능한 텍스트 에디터 QTextEdit html, markdown, plaintext 등 여러가지 형태의 문자를 지원하는 텍스트 에디터 메소드는 서로 공유하는게 많으니 용도에 맞게 사용하면 될 것 같다.
def df_to_clipboard(self, df_order: pd.DataFrame): print(df_order) df_order.to_clipboard(excel=True, index=False, header=None) 간단하게 함수로 만들어놨습니다. 해당 엑셀에 있는 정보를 df화 해서 위 함수를 실행하면... 8806442062918 10 8806442063014 20 8806442063229 56 8806439009124 100 8806439004730 120 8806442062819 10 8806442066015 100 8806442065810 100 8806442065919 200 위와 같은 결과가 클립보드에 복사됩니다.
from selenium.webdriver.support.ui import Select select = Select(driver.find_element_by_id("select_id")) # Select 객체 생성 for option in select.options: if "특정문자열" in option.text: select.select_by_visible_text(option.text) # 해당 옵션을 선택합니다. Select는 유용한 기능이긴 하지만 반드시 텍스트 혹은 value와 일치해야 하는 단점이 존재한다. 그 부분을 해결하기 위해서 짜본 코드
my_list = ['', 'apple', '', 'banana', 'carrot', ''] # 빈 값이 있는지 확인 if '' in my_list: # 빈 값들을 제거 my_list = list(filter(lambda x: x != '', my_list)) print(my_list) # ['apple', 'banana', 'carrot']
import re text = "Hello [world], [123] Python [is] awesome." new_text = re.sub(r'\[.*?\]', '', text) print(new_text) # 출력: Hello Python awesome.
import random content = "폐어망·폐생수통이 '갤럭시 S23'으로 화려하게 변신" synonym_db = ["수려하게", "유려하게", "아름답게", "화려하게"] def synonym_random_select(synonym_db: list, word: str): filtered_list = [synonym for synonym in synonym_db if synonym != word] synonym = random.choice(filtered_list) return synonym def convert_content(content: str, synonym_db: list): for word in synonym_db: if word in content: print(f"'{word}'가 ..
pyinstaller -n "파일명" -w --onefile --clean "main.py" --add-data "venv/Lib/site-packages/newspaper;newspaper" newspaper3k 라이브러리는 html에서 기사나 필요한 본문만 추출해주는 라이브러리이다. 보통은 pyinsatller가 사용자의 기본 폴더 (Local\Temp\_MEIxxxxx) 폴더 내에 필요한 라이브러리들을 넣어주는데, 간혹가다가 못넣어주는 경우가 있다. pyinstaller로 빌드 시 경로를 못잡는 경우가 있는데, 이럴 때는 해당 라이브러리를 아예 pyinstaller에 명시적으로 넣어주면 된다. pyinstaller -n "파일명" -w --onefile --clean "main.py" --add-d..