1/27/2022

WordPress網站小保養和大保養 | WordPress站長日常

身為需要管理8個WordPress網站的管理者,系統化的管理模式對我來說至關重要。經過幾年的摸索,有關WordPress建站的知識慢慢增加,我也開始建立起所謂的管理流程。

首先釐清一點,有些網站內容多、流量大,可能已經建置了一整個Team在維護,人多就有分工,甚至根本就有專人在負責IT。如果你或你公司的網站是屬於這種類型,那麼很幸運地你其實不需要閱讀本文。

本文所討論的WordPress網站維護,基本上是由一人打理,從文字文案撰寫、圖片收集及基本處理、基於範本的版面設計,以及網站本身的建置(買域名、選主機、設定DNS、安裝WordPress、下載各種外掛並安裝、抓bug)。然後,別忘了做完以上工作累得像條狗之後還有念茲在茲同樣重要的SEO搜索引擎優化等著進行。寫完這一串項目,突然覺得自己的工作不太人道~不過因為是幫家人的公司做,而且也都是小網站,所以就不嫌棄別人也不嫌棄自己,邊做邊學慢慢前進了。



這裡所介紹的WordPress網站維護基本流程,當然是基於我個人需要而規劃的,但我想對於某些同樣身為網站管理者的尤其新手來說,或許也有參考價值。那麼,我們就進入正題了。


風險意識,一定要有

每次進行網站維護之前,建議先做一次網站備份。最好主機備份和異地備份都做,這是個防範的動作,有做有保庇。萬一發生萬一的萬一,你會感謝有先做備份的自己。

我把網站管理維護工作簡單分成三大部分:


1. 平日工作

平日的工作主要是生成內容並上傳到網站,這又可細分為以下:

-撰寫文章並編輯、備置圖片並剪裁、拍攝影片並剪輯。

-將圖文內容上傳到網站後台,製作成新頁面(page)、新文章(post)。上傳並發布的流程,我會列出一個檢查清單(checklist),上面會有關於網址名稱命名、文字格式、圖片尺寸、設定鏈接等提醒,以保持發布內容格式的一致性,避免必要元素的遺漏。

-網站架構維護,包括WordPress核心程式、佈景主題以及外掛的日常更新(可參考我另一篇有關外掛更新的管理)。

- 網站安全性檢查。每次進後台都查看警示報告,看看有無值得特別關注的異常狀況。


2. 小保養

由於平日工作主要是專注在內容的製備及上傳,時間和注意力有限的情況下難免會忽略一些細節,因此就排定每一至三個月做小保養,所需花費的時間依網站複雜度而不同。主要項目包括:

-檢查文章與頁面的SEO設定有無遺漏:

a. 圖片有沒有都設定ALT
b. 文章與頁面有沒有設定關鍵詞(keyword)和描述(description)
c. 文章與頁面有沒有設置精選圖片(featured image)
d. 文章網址、頁面網址、圖片網址是不是用英文數字的格式(我個人偏好不使用含中文字的網址,但有時上傳會誤用)。提醒:想要修改網址的朋友,請記得要先安裝有網頁301轉址功能的外掛,以避免被改掉的網址變成404無法開啟。
e. 檢查文章與頁面是否都已有適當設置內鏈(internal links)

-首頁讀取速度是否正常:使用Google Page Speed、GTmetrix或Pingdom跑跑看,是否下載速度有異常,例如不小心上傳了1MB的圖片原始檔,發現之後可以趕緊改善。

-可以特別檢查一下每個頁面的手機版和ipad版是否都能正常顯示。其實這個在頁面製作完成的時候就應該都調整好,但人是肉做的,有時就是會忘記/沒空啊~


我覺得應該是因為我手邊有8個網站要維護,這意味著每一輪維護都要依序打開8個網站,同一項檢查(例如圖片的alt補充)要做8次,做完一項就已經快思考半癱,所以才有必要將維護工作分成小保養和大保養。如果你的手上只有一個或兩個網站,那麼我覺得大可以將小保養和大保養結合在一起完成。



在顯示項目設定處,勾選關鍵詞、Meta描述,以及內鏈和外鏈


設定顯示之後,就可以在頁面和文章列表中,看到關鍵詞和Meta描述、內鏈外鏈的設定狀況。


3. 大保養

大保養的目的是針對網站的結構進行深度的檢修。我們平日對網站添加內容,只會注意到內容有沒有正確顯示在網頁上,但是有可能在無意之中更動了網站結構。例如,把一個已經發布的網頁網址改掉之後,舊的網址如果沒有設定301轉址,就會變成無法訪問的404網頁。又例如,在無意之間上傳了大尺寸的原始圖片,導致網頁讀取速度被拖慢。這些難以用肉眼察覺的問題,最好能用網路工具來協助檢查,再一一排除。

檢查Google Search Console是否有提示錯誤訊息

這個Google站長工具應該很多人聽過、用過,目前可以免費註冊使用。使用之前須先驗證網站存取權。若是剛驗證通過,可能一時間不會提供什麼優化建議。待Google爬蟲爬取你的網站一段時間之後,就會累積對這個網站的了解,若找到什麼問題,會發郵件通知,建議你改善。

使用Ahrefs Webmaster Tools掃描全站,排查各類錯誤

這是國外的另一個站長工具,介面是英文的,目前可以免費註冊使用。同樣,使用之前須先驗證網站存取權。驗證通過後,可以立刻執行全站診斷。在Site Audit這個頁面查看診斷和除錯建議。比較常出現的重大問題會以紅色圓標表示,次要問題是橙色圓標,沒問題是藍色圓標。常見的重大問題包括4xx網頁(無法訪問的網址)、301網頁(太多網頁轉址)、圖片沒有設定alt、頁面漏了description、同一頁面重複使用兩個以上H1標題、沒有設置內鏈等等。 這個Site Audit你可以設定每星期指定時間執行一次(每月有掃描額度上限,但好像很難用得完),它能幫助網站管理者快速找出網站潛藏的問題。


網站管理本來就是一件需要費心的事情,牽涉繁複的知識和細節。而運作再怎麼流暢的網站,有時也還是有小細節需要調校。所幸有了好用的網路工具,加上自訂的管理流程,可以系統化的執行工作,提高效率和幸福感!



補充說明:

以下這幾個外掛是我認為網站管理必備的。如果你不喜歡這幾個外掛,也可以找同功能的來替代。

Redirection: 設定網址重新導向,也就是轉址
Smush: 把上傳後的圖片壓縮,以加速網頁讀取
Wordfence: 防毒防駭
All-in-One WP migration: 備份

1/26/2022

管理Plugin外掛更新通知 | WordPress站長日常

外掛更新(plugin update)是WordPress網站日常管理的一環,它有相當程度的重要性,畢竟讓外掛發揮功能,網站才能正常運作,而由於外掛的程式經常更新(就如同手機的APP),網站管理者有責任經常維護,使外掛程式保持在最新版。除此之外,佈景主題(theme)和WordPress核心程式也會不時發布更新,需要網站管理者留意維護。

當某個外掛程式發布更新、佈景主題發布更新、WordPress核心程式發布更新,WordPress網站會透過電子郵件來通知網站管理者。儘管每個WordPress網站安裝的外掛數量不盡相同,但根據我自己的經驗,架站時間夠長的話,外掛最少也有十幾個。

但是但是但是(因為煩惱所以說三遍),外掛程式開發者並不會約好了都在同一個時間發布更新,也就是說,我們身為網站管理者,幾乎每週都會收到這個外掛、那個外掛需要更新的通知,此起彼落,源源不絕。實務上,我們不太可能一收到郵件通知就馬上打開網站後台操作更新,而一年到頭在接收這種更新通知,會導致感覺麻痺。(也可能是因為我管理的網站比較多,所以才會感覺如此麻痺。)

總而言之,本文就以筆者個人經驗,希望透過設定來簡化外掛(plugin)、佈景主題(theme)、核心程式(WordPress)的更新流程。


首先介紹一個概念,佈景主題程式開發者以及外掛程式開發者在更新程式的時候,除了優化自己的外掛功能、修補漏洞之外,還必須使自己的外掛兼容於最新版的WordPress核心程式。反過來說,每當WordPress核心程式發布更新,實務上佈景主題程式以及外掛程式需要一小段時間差,才能隨後發布與其兼容的更新程式。

這個時間差,有時重要,有時不重要。讓我們假設某外掛現下的版本跟今天最新發布的WordPress核心程式有不相容之處(但我們若不是專家通常不會知道),那麼如果我們在不知情的情況下,立即更新了WordPress核心程式,就有可能造成該外掛的功能不正常,從而導致網頁顯示出現問題。當然,再次強調,並不是每次WordPress核心程式更新都會跟外掛相衝突。


基於這個概念,筆者在管理更新作業的時候,採取的策略如下:

一、除了與佈景主題相關的外掛,以及網頁編輯器外掛(如Elementor)之外,一般的外掛我都設定為自動更新。設定方式是進入網站後台,在左側清單選擇外掛>已安裝的外掛。然後在外掛清單的最右一欄,選擇啟用自動更新(Enable auto-updates)。設定自動更新之後,每當這些外掛的開發者發布更新,不管是在台北時間早上六點還是深夜兩點,我網站上的相應外掛都會自動進行更新,不需要我一一進入後台去操作。(不過,每次有外掛自動更新完畢之後,WordPress會發電子郵件通知我更新已完成。它這樣很乖巧,但是我並不想頻繁被這類郵件打擾,所以我要設法關閉這種通知。方法請見本文後半部。)


plugin auto update


二、至於沒有被設定自動更新的佈景主題相關外掛,以及網頁編輯器外掛,我的做法是,在收到電子郵件通知需要更新之後,撥空進入後台去手動更新會這樣做是因為,佈景主題外掛和網頁編輯器外掛是比較重要的程式,萬一更新後發生異常,會影響到所有頁面。所以我在手動更新這類外掛之前,會先做一次手動網站備份。而更新這些外掛之後,我也會查看前台頁面的顯示有沒有異常。萬一有異常的話,就可以馬上處理。

三、最後是關於WordPress核心程式的更新。前面提過,WordPress核心程式發布更新時,往往許多外掛都還沒跟上更新,因此我會等一段時間(約略一兩星期),再去後台手動更新WordPress核心程式。同樣地,更新WordPress核心程式之前,先做一次網站備份。

還有另一個比較細緻的做法,就是在更新WordPress核心程式之前,先手動檢查每個已安裝外掛(點選外掛的查看詳情),查看該外掛與WordPress核心程式的兼容狀況。如果有任何重要的外掛還沒有跟上最新的WordPress核心程式,就先不要把WordPress核心程式更新。(至於什麼是重要的外掛,並沒有統一標準。我只能說,不重要的外掛就是那些即使停用也不會影響網站基本運作和顯示的外掛。)


check if plugin compatible with WP core


最後,談一下如何關閉外掛自動更新的郵件通知(disable the WordPress plugin update notification)

雖然我已經把大多數的外掛都設定為自動更新,但是WordPress很貼心的在每次完成一個外掛的自動更新之後,都會發電子郵件通知我。也許有些人覺得很OK,但對我來說這是滿干擾的,所以我只好再找一個可以關掉自動郵件通知的外掛,希望減少比較不重要的郵件通知,而保留比較重要的郵件通知(例如WordPress核心程式更新、網頁編輯器外掛更新、以及佈景主題相關外掛更新的通知)。


關閉外掛自動更新的郵件通知,步驟如下:

1. 安裝Manage Notification E-mails(這是一個外掛):按照安裝外掛的標準步驟,下載、安裝並啟動它。


plugin manage notification e-mails


2. 如果需要的話,安裝後可以順便把這個外掛啟用自動更新

3. 進入Manage Notification E-mails這個外掛的設定(setting)頁面。把以下兩個選項取消勾選。取消勾選後,記得在頁面底部點選儲存設定,才算完成。


disable update notification


Automatic WordPress plugin update e-mail (外掛更新完成後的自動郵件通知)

Sends an e-mail after a successful automatic plugin update to administrators. E-mails about failed plugin updates will always be sent to the administrators

取消勾選的意思就是,外掛完成自動更新之後,不要用郵件通知我。


Automatic WordPress theme update e-mail (佈景主題更新完成後的自動郵件通知)

Sends an e-mail after a successful automatic theme update to administrators. E-mails about failed theme updates will always be sent to the administrators

取消勾選的意思就是,佈景主題完成更新之後,不要用郵件通知我(其實我沒有選擇自動更新佈景主題,而是自己到後台手動更新,所以這項通知也是不必要的)。


以上分享筆者管理外掛更新、佈景主題更新,以及WordPress核心程式更新的方式,僅供參考,不代表正確答案。無論如何,簡化WordPress網站管理的瑣碎環節,是為了節省精力和注意力,用來從事更重要的工作,例如SEO,然後相信某種程度上也是可以提高生活品質才是。


10/03/2021

製作gif動圖的2個方式:使用Python與Keynote

前陣子出於行銷需求,我想要自己製作gif動圖來吸引潛在客戶的目光。由於是實驗性質,也沒有預算可以花錢請人製作,於是就探索了一下DIY的可能性——用自己粗淺的Python知識湊出程式碼來用,很幸運有成功。後來呢,我又驚喜的發現,原來Mac電腦裡的Keynote軟體就可以用來製作「動畫式gif」(應該是我個人後知後覺吧~)以下就來介紹兩種製作gif動圖的方法。


使用imageio函式庫,製作gif動圖


我使用的是imageio這個函式庫,跑程式之前須先安裝它。我是在MacBook Pro裡面使用Python,所以進入終端機之後,以下列語法安裝:

pip install imageio


接下來,就是寫Python程式來完成任務。gif動圖生成的邏輯算是簡單的,首先要有至少2張圖片(我先把它們存在同一個檔案夾內,例如myfile檔案夾)。程式碼要做的,是把圖片名稱存入一個列表裡。接著利用imageio語法逐一讀取圖片,然後存為gif檔案格式。


import os

import imageio



#建立一個儲存檔案名稱的空列表

file_names = [ ]


#從存有圖片的檔案夾中,讀取圖片檔案名稱。然後要加上檔案夾路徑,然後存在列表中。

for file in os.listdir(path='./myfile'):

    if file[-5:] == '.jpeg':

        file_names.append('./myfile/' + file)


print(file_names)


#建立一個儲存圖片的空列表

images = []


#把一開始儲存檔案名稱的列表叫出,逐一存入圖片列表

for i in file_names:

    print(i)

    images.append(imageio.imread(i))


#存為gif動圖格式

imageio.mimsave('output.gif', images, fps=0.8)






目前我發現這組程式碼的缺點是,我無法指定圖片出現的順序。如果圖片出現的順序不是預期的,會有點傷腦筋。目前補救方式,只能重複多跑兩次程式,看看會不會出現一次是正確的順序這樣。



用Keynote製作動畫式gif


用Keynote軟體製作gif動圖,需要把圖片貼到Keynote的頁面上,再存為動畫式gif。


1. 開啟Keynote,新增檔案。點選右上角的「文件」,在右側清單下方設定「幻燈片大小」。寬和高依照需要而定,這裡先用350px的正方形製作。(雖然可設定更大,但儲存時最大為480px)




2. 把圖片一一貼到Keynote頁面上。如有需要,還可以利用這個軟體的編輯功能,在頁面上增加文字或圖案。編輯完成後,選擇「檔案」--「輸出至動畫式gif」。




3. 儲存之前,要設定好參數。這些參數可自己選擇、比較不同效果。要注意的是,內建的解析度只有480x480。如果你需要更高的解析度,那就無法使用這個方式製作動圖了。





這個就是Keynote生成的gif檔案。我還發現,用Keynote製作出的GIF檔案會比較大,例如這次製作,python的GIF圖vs.Keynote的GIF圖=146KB vs. 1.3MB。




12/10/2020

Advanced noCaptcha & Invisible Captcha 外掛設定

{2022/2/27更新:Advanced noCaptcha & Invisible Captcha外掛已經更名為Captcha 4WP。其官方宣布,自3月15日起,其免費版不再支援Contact Form 7表單,需要此功能將必須升級到付費版。本文所涉及的Contact Form 7設定將不再適用於"免費版"的Captcha 4WP。

我已改用另一同功能外掛來支持Contact Form 7的防機器人留言功能。如有需要,您可參考外掛hCaptcha for WordPress的安裝使用說明。}


就在這星期一,我自建的其中一個WordPress網站遇到一個問題,就是下午兩點至三點(14:23-15:15)之間,超乎尋常頻率收到從Contact Form 7進來的留言,而看樣子那個是系統性(機器人)發送的。留言的內容是德文,看起來不是一般的廣告郵件,並且在短短一小時內發了十五封。結果,在我自己來得及反應之前,主機商已經偵測到不對勁,主動停止了此網站對外發送郵件的功能。(如果沒有停止發郵件的功能,垃圾留言應該會持續灌進來。)

這是我第一次遇到這樣的狀況,一時之間不曉得該怎麼處理才好。不過,當我收到主機商的通知郵件(15:15)之後,我開始擔心是否遭受了病毒的攻擊。我先進入網站後台,把頁面上的Contact Form移除,這樣至少機器人就沒辦法繼續灌留言。

剛巧那天晚上我正要去參加WP小聚,於是在小聚會後趕緊詢問了某位大大。大大聽了我的描述之後,研判應該不是病毒植入主機檔案這類問題。他認為,病毒植入的行為通常是希望隱密不被發現,而在表單上留言一定會通知網站管理員,所以比較可能是機器人灌垃圾留言(但我就不解為什麼要這樣灌留言,大大則說有可能郵件裡面有釣魚鏈接~)。

既然判斷是惡意的機器人灌留言,那麼建議的解決方法就是安裝一個防機器人的留言機制。大大推薦使用的外掛是Advanced noCaptcha & Invisible Captcha。像這類「我不是機器人」測試,相信許多人在瀏覽網站時都碰過:你勾選「我不是機器人」之後,會跳出一組照片,要你選出所有含有某物件的照片(例如紅綠燈、自行車、汽車)。聽說,目前為止只有人類能夠通過這樣的測試,而用程式驅動的機器人是做不到的。通不過測試就無法發送留言,如此便可防止被大量灌留言。

安裝外掛之前,我先到YouTube搜尋相關的教學影片,果然找到有熱心網友講解設定的流程。以下摘要記錄我設定的過程,以備未來有需要再使用時查看。


Advanced noCaptcha & Invisible Captcha設定步驟

1) 在WordPress後台,下載Advanced noCaptcha & Invisible Captcha 這個外掛,安裝啟用後,進入它的Settings標籤頁,我選擇的reCAPTCHA type是 V2 "I'm not a robot"。

下面Enabled Forms則是依需要選擇,例如我也選擇在登入後台時、找回密碼時、重置密碼時、留言時,啟用這個防機器人機制。

接著來設定Google Keys。可以點選圖一中,Google Keys下面那行Get reCaptcha from Google的Google鏈接(此時須登入你的Google帳號),就會進入圖二的畫面。


圖一

2) 連到Google reCAPTCHA進行註冊。如圖二,輸入所有需要的資料,然後點擊「提交」,就會出現Site Key和Secret Key。把這兩組Key分別複製,填入圖一對應的格子內。不過,如果要讓這個功能應用在Contact Form 7,還需要多一步設定,請看步驟3。


圖二


3) 若想要這個功能運用在Contact Form 7,需要埋一段代碼在Contact Form 7表單上。點擊圖一中紅色框裡的鏈接,就可以到另一個網頁上抓取那段代碼(見圖三)。把圖三中的紅色字代碼,儲存到Contact Form 7的表單設定中(通常放在"傳送表單"的前面即可)。填寫完畢後記得都要儲存。

圖三

4) 儲存好設定後,建議清除快取,再登出後台,然後打開網站含表格的那個網頁。這時應該就會看到「我不是機器人」的reCAPTCHA設置(如圖四)。


圖四

說實在的,我自己在上網的時候,並不喜歡面對這種reCaptcha的考驗關卡,因為它總是會讓我莫名其妙緊張起來😓。這也是為什麼我一直以來都沒想在自己網站設定這個功能。然而,形勢比人強,似乎現在的網路世界就是充斥著那麼多亂七八糟的所謂機器人,意圖不明或含有惡意的程式,讓人不設防都不行。(順道一提,我也發現,現在收到的一些廣告留言,推銷網站SEO服務的,似乎也都是用某種程式群發的了。看起來它們不是抓取網站裡的郵件信箱來發送廣告,而是利用爬蟲那類機制留言在contact form。)

想到未來所謂的AI勢必會更廣泛地運用在生活各層面,而網際網路是最適合機器人流竄的空間。可憐的建站者和網站管理員就得學會跟這些看不見的機器人搏鬥了。


相關文章參考:
移除Captcha 4WP外掛的步驟

10/04/2020

找到幾個還不錯看的Blogger主題範本 | Blogger網站製作

先前為了製作網站,曾經花了不少時間在網上尋找合適的(免費)主題範本(Theme)。當時還不確定要用Blogger或WordPress建站,因此兩類主題範本都找過一輪,真的很花時間。現在把當時找到比較喜歡的Blogger Themes記錄下來,以後若需要再建站,可以從這些範本開始,或是從它們的來源網站作為起點去搜尋。


我個人偏好的網頁是色彩協調、淡雅的風格,方便套用自己的色彩配置和圖片。


KELLY

https://gooyaabitemplates.com/livepreview/kelly/

來源:gooyaabitemplates.com網站

特色:兩欄(右欄為邊欄)、響應式網頁、有手機版網頁、優雅風格


Grace

https://gooyaabitemplates.com/livepreview/grace-2/

來源:gooyaabitemplates.com網站

特色:兩欄(右欄為邊欄)、響應式網頁、有手機版網頁、優雅風格


Fabel

https://gooyaabitemplates.com/livepreview/fabel/

來源:gooyaabitemplates.com網站

特色:兩欄(右欄為邊欄)、響應式網頁、有手機版網頁、優雅風格


invento

http://invento-templateclue.blogspot.com/

來源:templateclue.com

特色:一欄、響應式網頁、有手機版網頁、不規則形狀banner、動態效果


sora times

https://sora-times-soratemplates.blogspot.com/

來源:soratemplates.com

特色:響應式網頁、有手機版網頁、輕文藝風格



Travelty

https://travelty-way2themes.blogspot.com/

來源:way2themes.com

特色:兩欄(右欄為邊欄)、響應式網頁、有手機版網頁、俐落簡約風格



Unite White

https://unite-srtemplate.blogspot.com/

來源:soratemplates.com網站

特色:兩欄(右欄為邊欄)、響應式網頁、有手機版網頁、橙色藍色配色



以下幾個為btemplates.com網站上的主題範本,似乎比較傳統,可能是較早期開發設計的。如有興趣,可以參考。



Confit

https://btemplates.com/2016/blogger-template-confit/

來源:btemplates.com網站

特色:兩欄(左欄為邊欄)、響應式網頁、有手機版網頁、圖片背景



FitnessWP

https://btemplates.com/2016/blogger-template-fitnesswp/

來源:btemplates.com網站

特色:兩欄(右欄為邊欄)、響應式網頁、有手機版網頁、綠色系配色



MyBiz

https://btemplates.com/2016/blogger-template-mybiz/

來源:btemplates.com網站

特色:兩欄(右欄為邊欄)、響應式網頁、有手機版網頁



Aurora

https://btemplates.com/2016/blogger-template-aurora-2/

來源:btemplates.com網站

特色:兩欄(右欄為邊欄)、響應式網頁、有手機版網頁、簡約風格、白色背景



FinanceNet

https://btemplates.com/2016/blogger-template-financenet/

來源:btemplates.com網站

特色:兩欄(右欄為邊欄)、響應式網頁、有手機版網頁、簡約風格、米白色背景


9/22/2020

使用PyPDF2模塊抽取PDF部分頁面另存新檔 | Python筆記

最近試著整理有關PDF的Python程式,本文筆記的是,把已有的PDF檔案,取出一頁或多頁,另存一個PDF檔。以下就是完整的代碼附註釋。


#使用的是PyPDF2模塊

from PyPDF2 import PdfFileReader, PdfFileWriter


#可直接寫入PDF檔案名稱(須含副檔名),也可用input()取得

fileName = input('填入PDF档,须含副档名: ')

     

#實例化一個writer

pdf_writer = PdfFileWriter()


#開啟已有的PDF檔,並實例化一個reader

file_to_get = open(fileName, 'rb')

pdf_reader = PdfFileReader(file_to_get)


#看一下原檔的總頁數

NUM = pdf_reader.getNumPages()

print(NUM)


#開啟要存的新檔

newPDF = open('newPages.pdf', 'wb')


#這裡以input()收取要存的頁面。也可改成直接寫入數列

Pages = list()

k = 0

while k == 0:

    ent = int(input('Enter page number or enter -1 to quit:'))

    if ent >= 0:

        Pages.append(ent)

    else:

        k = k + 1


#檢查輸入的頁碼        

print(Pages)


#把指定的頁面逐頁加入writer,再寫入檔案

for pm in Pages:

    newpage = pdf_reader.getPage(pm)

    pdf_writer.addPage(newpage)

    pdf_writer.write(newPDF)


#記得關閉檔案!若沒有關閉檔案會出現錯誤,少一頁    

newPDF.close()


9/21/2020

與pip相關的指令 on Mac電腦 | Python筆記

pip 是用來安裝模塊(module)、管理模塊的程式。本文假設Mac電腦的Python3已經安裝完成,以下筆記的是pip的相關指令。以下寫在%後面的指令,代表在終端機狀態下(不需啟動python)。

% pip --version

據說pip在Python安裝後就附帶在裡面了,我們可以用這個指令查詢pip的版本號碼。


% pip list

% pip freeze

以上兩個指令都可以用來查詢已安裝的模塊有哪些,以及模塊的版本號碼。


但是,如果你的pip版本不是最新,pip list查詢的結果會順便提醒你現在有新版可以更新,並且提示更新pip的指令。例如以下這個:

% python3.8 -m pip install --upgrade pip

更新之後,再查詢一次pip版本,就可以看到版本號碼變了。



不過,用pip list或pip freeze雖然可以查詢模塊的版本號碼,卻無法得知哪些模塊不是最新版本。

% pip list --outdated

這個指令可以用來查詢哪些模塊已經過時(outdated)。



% pip install --upgrade modulename

遇到有過時的模塊,可以用這個更新的指令,升級到最新的版本。



安裝新的模塊


% pip install modulename

用這個指令來安裝新的模塊。


% pip list

同前,查看已安裝的模塊有哪些。


% pip show modulename

查詢某個模塊的詳細資料,包括版本號碼、模塊用途、相關網站、開發者、開發者電子郵箱、模塊儲存位置等。



% pip uninstall modulename

如果想要移除某個模塊,用這個指令來解除安裝。