Category: Python / Perl
Linux 下很多系統管理的工作都會涉及讀取檔案的內容, 在 Python 下可以透過多個方法開啟檔案、讀取 Pipe 及以參數方式讀取檔案。 fileinput 是 Python 的內建模組, 它可以用很簡單的方法, 實現以上的工作。fileinput 模組提供處理一個或多個檔案的功能, 可以是透過 Pipe 輸入、用參數方法指定檔案, 或者在程式碼指定檔案也可以。 以下是 fileinput 模組的使用例子: 看到上面的程式碼很簡單, 但已經可以將 Pipe 及 參數輸入的檔案讀取, 並逐行印出, 例如: $ …
在 Unix Like 環境下的 Pipe (管線) 十分重要, 它可以將一個程式的輸出, 送給另一個程式處理, 只要中間用 “|” 字符相隔, 讓幾個不同的程式互相配合工作, 以下本章會介紹在 Python 讀取 Pipe 輸入的方法. 在 Python 要讀取 Pipe 輸入, 可以用 sys 模組的 sys.stdin, 它會讀取 /dev/stdin …
執行指令時, 可以在程式後加入一些參數, 這些參數會傳送給程式。在 Python 要讀取這些指令的參數。 sys 模組 sys 模組提供多個 Python 執行時的環境變數, 而 sys.argv() 是儲存執行指令的陣列, 第一個元素是程式本身。 以下是程式碼的寫法: 以上程式碼會印出執行程式的名稱, 配合 len() 函式, 可以知道指令輸入了多少個參數。以下是配合使用 len() 函式, 把輸入的參數印出:
Python 輸出內容跟其他程式語言差不多, 用 print 便可以印出想要的內容, 例如: 這樣就會印出 “Hello World!” 到顯示器。 但同時 Python 也會自動在最後加上換行 “\n” 的字串, 例如: 上面會印出: Hello World! Hello World! Python 3 要解決較容易, 只要在 print 裡面定義參數便可以, 寫法如下: 上面第一個 …
寫程式很多時都需要做字串搜尋並取代, 在 Python 內很簡單, 只要用內建的 replace 方法便可實現。 語法 以下是 replace() 的語法: 參數: old − 原來字串, 找出並用新字串取代. new − 替換字串, 替換在原來字串內. max − 如果有定義 max 參數, 只會取代最初出現的 “max” 次數的字串. 例子: …
以下會列出在 Python 排序串列(list) 的方法, 包括數值及字串進行順序或倒序排序。 數值排序 使用 sort 方法, 可以對串列內的數值 (包括整數及浮點數) 進行排序: 上面程式碼對 myList 串列排序, 執行結果是: 上面所使用的 sort 方法會改變原本的串列排序, 但如果想保留原本的串列排序, 那便要用 sorted 函式, 例如: 執行結果與上面的例子一樣, 分別是保留原來 myList 的排序, 將新結果放入新建立的串列 …
Linux 將系統帳號關於密碼的資訊儲存在檔案 /etc/shadow, 而密碼是經過加密。不論基於任何原因, 如果需要手動編輯 /etc/shadow 的密碼, 便需要產生一個與 /etc/shadow 使用相同加密方式的密碼。而且不用安裝其他工具, 用 Python 便可以產生這個加密密碼。 在 shadow 內的加密密碼, 以下列格式儲存: $ID$SALT$ENCRYPTED 上面的 $ID 是加密方式, $SALT 是一個最多 16 位的隨機字串, $ENCRYPTED 則是 password hash. …
Perl 最大優勢是擁有 CPAN 函式庫,但如果沒有安裝 CPAN, 執行 CPAN 時出現以下錯誤: # perl -MCPAN -e shell Can’t locate CPAN.pm in @INC …… 這時只需安裝好 CPAN 模組便可以,以下提供原碼安裝及 Yum 安裝的方法: 原碼安裝 1. 到 CPAN 的官方網站找到 …
要在 Python Dictionary 的 key 及 value 做排序,可以用以下方法: key 排序: 以上會將 mydict 進行以 key 的排序,執行結果是: Alan: 30 Danny: 15 Ethan: 20 Ivy: 10 value 排序: 以上會將 mydict 的 value …
編寫在 CLI 執行的程式, 很多時都會用到詢問使用者 yes / no 是否執行, 以下記錄一下在 Python 的寫法: 例如: 上面程式很簡單詢問是否繼續, 如果輸入 “yes” 則會輸出 “Hello World!”. 上面程式必須輸入 “yes” 才會輸出 “Hello World!”, 如果輸入 “Yes” 則不會繼續, 其中一個方法是將 if 判斷式加入多一個選項, …