發表文章

目前顯示的是有「python」標籤的文章

python qgrid 安裝是個大坑

 python qgrid for jupyter 是個快速瀏覽資料的ui工具,可惜的是它的維護狀況有問題(在試了各種安裝和除錯後才發現),從 python 3.11 試到 3.9 ,ipywidgets 8 降到 7.8 再降到 7  不再折騰了,留給神人吧… ipydatagrid, datasette ... 可能可以考慮

使用 python 處理 excel 檔案的前置準備

 因為要處理 excel 檔案的內容,由於數量龐大,不想 ctrl C + ctrl V N 次,所以想要動用程式來處理,這次要用的是 python,雖然說是處理 excel ,其實拿到的檔案是 ods 的格式,所以還得做一些前置工作。  工作環境:     Windows 10     python     anaconda 建立一個名為 excel 的獨立 python 工作環境   conda create -n excel   cd excel 啟用名為 excel 的工作環境   conda activate excel 這個工作環境裏要安裝這些 python 套件   python -m pip install openpyxl   python -m pip install pyexcel pyexcel-ods pyexcel-ods3 pyexcel-odsr pyexcel-xlsx pyexcel-xlsxw   關閉現行的工作環境   conda deactivate 可以寫程式取用 ods/excel 了 收工!

Mito vs DTale

 Mito 最近應該下了重本,到處宣揚它的功能強大,DTale 則是 UI 相似並且的操作邏輯雷同的方案,雖說 python 做圖的工具不只這2個,至少,這2個是冰淇淋,容易吃的冰淇淋,而 Mito 的賣相好似好一點,曾經,有那麼一會兒的曾經,不知道選那個好一點,有道是,小孩才做選擇… 工作環境:     Windows 10     Anaconda       jupyter       env:         mito         dtale  Mito 裝著裝著就起來了,接著讀表單,然後,就……卡住了,卡在少了個 (*^%$%^&*((*&% 的東東,雖然隔天重開機就自體痊癒了,先醬子好了畢竟,要讀個檔案少了個 UI 還是多一檻  DTale 一會兒裝起來了,馬上   dtale.show(open_browser=True) ,檔案拖、拉、放到剛才開啟的 UI 就開工了…,操作介面還算直覺 目前 DTale 勝出     收工!    

在移除 python2 之後 docker-compose 除錯

 其實要是不手賤可以不用這麼麻煩,因為大部份的時間用的是 python3 但是,裝的時侯沒注意,裝了 python2 和 python3 而預設的 pip 用的是 python2 ,在移除了 python2 之後,原本作動得好好的 docker container 不動了。  症狀: Traceback (most recent call last): File "urllib3/connectionpool.py", line 677, in urlopen File "urllib3/connectionpool.py", line 392, in _make_request File "http/client.py", line 1252, in request File "http/client.py", line 1298, in _send_request File "http/client.py", line 1247, in endheaders File "http/client.py", line 1026, in _send_output File "http/client.py", line 966, in send File "docker/transport/unixconn.py", line 43, in connect FileNotFoundError: [Errno 2] No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File "requests/adapters.py", line 449, in send File "urllib3/connectionpool.py", line 727, in urlopen File "urllib3/util/retry.py", ...

Selenium 把瀏覽器帶到前景聚焦

 Selenium 基本上是做不到把瀏覽器帶到前景的,通常是要透過 pyWin32 之類的工具來操作,而透過 pyWin32 又要先找到當前在使用的瀏覽器是哪一個(坑),苦手,只能另闢蹊逕來填這個坑。 工作環境:     Windwos 會開很多視窗,疊來疊去,也會開很多網頁     python3         Selenium         pyautogui   driver . maximize_window () pyautogui .moveTo( 500 , 20 ) pyautogui .click() driver . set_window_size ( 960 , 1080 )  結果是讓 Selenium 用全螢幕把整個視窗佔住,這時侯趕快在瀏覽器上點一下,如果有需要再把瀏覽器調成合適的大小,這樣子就可以順利把想要的網頁帶到前景來處理後續的工作。   收工!   ===================== 坑 ======================= pyWin32 找到 firefox、focus,後來不知怎地,抓到的不是工作中的 firefox  固定作業用的網站在瀏覽器中的位置(頁籤),不然作業會變得複雜

selenium 網頁存檔

 selenium 常作為一個除錯工具,可以模擬瀏覽器,瀏覽網頁,儲存網頁內容是非常常見的操作,筆記一下。 工作環境:     windows 10     python 3          selenium          codecs   from selenium import webdriver import codecs import os def savePageSource ( fName ):     #用寫入模式開啟檔案並且指定檔案編碼     f = codecs . open ( fName , "w+" , "utf−8" )     #取得網頁內容     html = driver . page_source     #把網頁內容寫入檔案     f . write ( html ) f . close ()   pageSource = "https://somewhere.com" #設定 chromedriver.exe 所在的路徑,或是和這個 python 放在一起,就可以不用加 executable_path 的參數 driver = webdriver . Chrome ( executable_path = "C: \\ chromedriver.exe" ) driver . implicitly_wait ( 0.5 ) #把瀏覽器放到最大 driver . maximize_window () #瀏覽指定的網頁 driver . get ( pageSource ) #指定要存的檔案路徑和檔名 n = os . path . join ( "D: \\ somewhere" , "savePage.html" ) #網頁存檔 savePageSource ( n ) #關閉瀏覽器 driver .close () driver...

python 記錄器

 python 有個 logging 的 module ,不難,能夠滿足輸出訊息到終端上,也能再存個檔來觀察,雖然要做到醬子並不難,透過官網的說明大致上每次大概使用同樣的10幾行就可以完成引用。由於還沒有找到像 laravel 一樣的 debugger 工具,希望之後每次引用只要1行就行,好在…已經有人把物件(class)寫好,存好檔後之後每次要引用只要1行就行。  工作環境:     Windows 10     Python 3         logging         sys   #!/usr/local/bin python3 # -*- coding: utf-8 -*- ''' # 使用方法:   # import THIS_FILE_NAME(不包括 .py 的部份) # logger = log.dLogger(log_file=myLog, name=myTag) # logger.debug("字串;通常是執行的結果")  # 結果: 2021-12-27 21:15:03,965 - myLogTag - DEBUG - blablabla  ''' import logging import sys from logging import Logger from logging . handlers import TimedRotatingFileHandler class d Logger ( Logger ):     def __init__ (         self ,         log_file = None ,         log_format = " %(asctime)s - %(name)s - %(levelname)s - %(message)s " ,   ...

中文簡繁轉換兩三事 Opencc

 中文簡繁轉換之前是用 convertz ,一來應用程式已經不知道放哪兒去了,二來目前網站上的範例用的都是 opencc ,不想折騰就跟風了,結果還是折騰了一下。 工作環境:     Windows 10     Anaconda     Python 3 (3.6,3.8)         opencc, hanlp     MS Visual Studio Build Tool + VC         opencc v1.1.3  總結一下,要在 Windows 上使用  OpenCC ,大致上要裝 VC ,下載 Opencc 來編譯,設定引用檔案,複製引用檔案到專案資料夾,開始使用 OpenCC。  OpenCC 目前是放在 https://github.com/BYVoid/OpenCC 沒有已編譯好的執行檔,如果要的話,得自已編譯, 如果要用 python 處理,安裝倒是簡單 pip install opencc 然後就 import opencc converter = opencc.OpenCC('s2t.json') converter.convert('汉字') # 漢字 好在之前為了要抑制 python gensim 產生的提示訊息要 pip install python-Levenshtein 在安裝時環境所需已經先裝好了 VC(v142)  因為想要使用範例中的指令方式處理資料所以自已編譯 opencc ,照著 OpenCC 說明檔 git clone https://github.com/BYVoid/OpenCC.git  build.cmd test.cmd 之後到 build/bin 裏面去找執行檔就行  OpenCC 的 data 裏有 config, dictionary 在轉換時會用到,要用的時侯,複製到專案的資料夾中 OpenCC 才能作用,其中設定檔要改一下,因為沒有發現所需的 osd 檔,好在 t...

指定想要的檔案類型 解壓縮搬到想要的地方 再指定要去的聯結網址

 這次想來點…和標題一樣的事,都是一些基本的檔案操作,只是以往都是用 PHP 這次要用 python ,使用越來越多的 python 覺得它的限制好像少一些,新用途多一些,可能還是得慢慢轉過去,唉!一把老骨頭,聽到朋友說,他們公司的工程師平均 3x 歲,年輕真好啊,逝去的青春如是喃喃著…… import glob, os from pathlib import Path from datetime import datetime from zipfile import ZipFile as zf import shutil import webbrowser myPath = "C: \\ Downloads" extractTo = "C: \\ Downloads \\ Extract" moveTo = "D: \\ moveHere" smsF = u "sms.jpeg" ptF = u "pt_20211129123456789.ods" output = [] now = datetime.now() today = now.strftime( "%Y%m %d " ) thisH = now.strftime( "%Y%m %d %H" ) zPwd = b "1234" # 找下載資料夾中,最後修改日期是今天,類型是 zip 的檔案 myExt = ".zip" for root, dirs, files in os.walk(myPath):     for file in files:         if file .endswith(myExt): #             print(os.path.join(root, file)) #            if (file.find(today) != -1):             if ( file .find( "Gmail" ) != - 1 ):       ...

逃不開的 jupyter 要客製啟始位置

圖片
 jupyter 做為開發 python 的工具實在太好用了,即使有了 VS Code 也是逃不掉,面對它,處理它,放下它,希望只設這一次就好, XD 工作環境:   Windows 10 pro 用另一個 user 帳號裝的 anaconda     anaconda       python       jupyter 執行的時侯,因為工作使用的帳號和之前安裝 anaconda 的帳號不同,真的懶得切換到安裝的帳號,也不想重裝就想啟動 jupyter 時,能到讀取客製的資料夾。 發現,原安裝帳號 jupyter 的設定檔已經有了,裏面的資料夾也有設: ## The directory to use for notebooks and kernels. #  Default: ''  c.NotebookApp.notebook_dir = u 'D: \\ somewhere'  表示之前已經 jupyter notebook --generate-config  即使改了原安裝帳號的設定檔還是不會讀指定的資料夾,所幸找到了個不用折騰的設法,把原本的 USERPROFILE 改掉 改好目標的最後部份就行   按下捷徑執行 jupyter  ,通常是連到 http://localhost:8891/tree 如果不能設密碼,記得看那個黑黑的終端機裏面,有個有 ?token=blablabla..... 的連結,用它來開你的 jupyter 。 [I 11:22:33.999 NotebookApp] http://localhost:8891/?token=c49adblablabla......................... 收工!                

selenium 的二三事

 Selenium 做為網頁測試之用真的好用,函式也很直覺,網站上很多相關的文件,這裏紀錄一下自已用到的一些可能比較要注意的。 python 要裝 selenium  還有一些可能用得到的像是 datetime, time, os, random, pyautogui, yaml, codecs, wget, urllib3 如果要辨識圖形驗證碼,還要再用 cv, tesseract ,這個部份的程式要先裝好,再裝 python 的函式庫 大致的操作   引用所需的函式庫往上拉到最上面,以免操作時引用無法順利抓取網頁內容 from datetime import datetime from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys from selenium.webdriver.firefox.options import Options from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.ui import Select import time import os import wget import random import pyautogui import cv2 import pytesseract import yaml import urllib3 import codecs 設定日期可能少不了 now = datetime.now() today = now.strftime( "%Y%m %d " ) 讀取帳密也常用 #找到對應的帳密位置 save_path = "D:/somewher...

Python 安裝模組以安裝 geocoder 為例

犯蠢的故事是這樣開始的,在 FB 上看到 geocoder 可以引用 tgos 模組,這樣一來,如果要查門牌號碼對應的地理資訊,就可以透過這個工具來查找, 只要3行 ,看起來超簡單。 不簡單的就只有那個 But 工作環境︰ Windows 7 pro Python zip(python-3.5.1-embed-amd64.zip)︰ 非 installer 安裝,解到 D:\python     pip python 的套件管理工具 官網說, pip install geocoder 然後呢! 然後它就出現錯誤訊息,長得像下面這樣。 然後只好發信給原作者,非常快,沒想到才幾分鐘作者就回信了,給了我一些建議。 然後我就開始試著看 virtualenv 之類的,有些套件可以裝,但是還是卡在同一個地方,好像是個跨過不去的關卡。     writing top-level names to pip-egg-info\click.egg-info\ top_level.txt     writing manifest file 'pip-egg-info\click.egg-info\ SOURCES.txt'     warning: manifest_maker: standard file '-c' not found     error: [Errno 2] No such file or directory: 'd:\\python\\python35.zip\\ lib2t o3\\Grammar.txt' Command "python setup.py egg_info" failed with error code 1 in C:\Users\someone\AppData\Local\Temp\pip-build-aw8h0tri\click\ 開檔案總管查看,D:\python資料夾下有個 python35.zip 和一個 python 的資料夾,裏面有 lib2to3 ,也有 Grammer.txt ,後來不管三七二十一,python 資料夾直接給它一個分身,就叫 pytho...