發表文章

目前顯示的是 11月, 2021的文章

中文簡繁轉換兩三事 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 檔,好在 txt 檔還是有的, s2tw.json: type: ocd 改成 type: text ; file:*****.ocd 改成 file:*****.txt 再把相對應的 txt 檔(也就是下方所指的 *****.txt)複製到專案資料夾 {   "name" : &quo

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

 這次想來點…和標題一樣的事,都是一些基本的檔案操作,只是以往都是用 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 ):                 output.append(os.path.join(root

逃不開的 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......................... 收工!                

有什麼服務在運行 用的是哪個套件

 一開始聽到少就是多的時侯總想著怎麼可能,多就是多,少就是少,耐何選擇多的時侯,就真的亂了,亂了不打緊,糟糕的是找不到頭緒來處理。這次想知道的是,用的網頁伺服器是那個?裝太久,忘了 :p 工作環境:   Ubuntu Server TLS 18    方法: 1、 netstat -tulpan | grep -w ":80" 不行,但是骨哥出來的文章說可以,企!   tcp6       0      0 :::80                   :::*                    LISTEN       - 原來是要 sudo 才會顯示 tcp6       0      0 :::80                   :::*                    LISTEN       1234/apache2 2、lsof -i :80 不行,什麼都沒輸出,但是骨哥出來的文章說可以,企!  也是要 sudo 才會顯示 COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME apache2  1234     www    4u  IPv6  12345      0t0  TCP *:http (LISTEN) 3、fuser 80/tcp  不行,什麼都沒輸出,但是骨哥出來的文章說可以,企!   還是要 sudo 才會顯示  80/tcp:               1234 12345 23456 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^啥鬼 ps -p 1234 -o comm=  apache2 4、後來想到的,去 /etc 下面看一下,如果沒有同性質的套件都裝了的話就可以知道用的是哪個套件了 所以, lsof 蠻直覺的,但是覺得可能會忘(這就是為什麼要把這個這麼簡單的東西寫下來的原因了咩),netstat 常用,多記個 grep -w 就行,還有莫忘 sudo。   收工!

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:/somewhere/se

symfony var-dumper 和 php 的除錯工具 whoops

 PHP 的除錯,借助最基本的 echo print_r 已久,雖然早有除錯工具,像是 Xdebug 之類,總覺得在部署上不是很直覺,在使用 Laravel 的時侯,覺得它的除錯工具不錯,就是訊息好多,繞來繞去的,有時侯反而模糊了焦點,但是,不是什麼東西都需要拿 Laravel 出來用的,這時侯又想回頭去試試 Laravel 的除錯工具了。 工作環境:   PHP     flip/whoops     symfony/var-dumper 安裝很直覺 composer require symfony/var-dumper composer require filp/whoops 引用要花點工夫 $debug = TRUE ; $debug = FALSE ; # Composer 自動載入 require_once __DIR__ . "/vendor/autoload.php" ; if ( $debug ){     # Whoops     $whoops = new \Whoops\ Run ;     $whoops -> pushHandler ( new \Whoops\Handler\ PrettyPageHandler );     $whoops -> register ();     error_reporting (E_ALL); } else {     error_reporting ( 0 ); } 連追蹤時的 echo 也不想打了 function dumpVar ( $var ) {   //有開 whoops 時使用   foreach ( $GLOBALS as $var_name => $value ) {       if ( $value === $var ) {           echo $var_name ;           dump ( $var );       }   }   br ( 2 ); }   function br ( $cnt = 1 ){   for ( $i = 0 ; $i < $cnt ; $i ++) {     # code...     echo '<br/>' ;