信義101健康管理診所 體驗心得

近期 ShengYu 進行年度健康檢查,今年比較特別就想選新的健檢中心嘗試看看,就選了信義101健康管理診所這家健檢中心,就來順手紀錄一下體驗心得。

第一次來信義101健康管理診所進行年度檢查,先用機台報到後會有號碼,然後準備等櫃檯叫號,然後會請你安裝他們的APP,稍後會用到。

捷運紅線101下車2號出口走出來後就可以看到這棟建築物了,信義101健康管理診所位於這棟大樓的4樓,這棟看起來都是新光集團的。

第一次做電梯是要在外面先按樓層,然後它在告訴你去哪個電梯搭,沒見過世面的鄉下孩子XD。

這一袋是等等要換的衣服褲子跟拖鞋,是送的可以帶回家,蛤?!我當下嚇到,可以帶回家喔,但是發現有Logo不會穿出門,大概在家穿吧。事後才知道原來是公司合作的方案中會送,一般要回收的是紫色的。男生只能穿自己的內褲,還有帶著手機,因為要看APP看診號跑站點。

動線算是一個放射線的路線,每個門診前都有座位區可以等候,還有螢幕可以看候位狀況,不時地也會有人來告訴你怎麼去哪一號門診,每門診結束後都會告訴你下一站去哪一號,整個健檢中心都在同一層樓,這部分表現不錯。

花了兩個多小時終於跑完所有站點做完檢查,肚子超餓的,來去用餐了,用餐環境不錯,領取號碼牌就直接去想做的位子等就可以了。

餐點會稍候送到位子上,餐點我是選雞肉沙拉,吃起來還不錯,飲料可續杯,第二杯我換黑咖啡提提神,跟別間健檢中心相比,我還是比較喜歡吃有飯的餐盒,我是飯食主義者,沙拉吃不飽,雖然裡面也有一些地瓜跟幾條螺旋麵。

結論

整體來說,感受是不錯的,唯獨少數一些站點人員可能有一些職業倦怠,過程中講的一連串東西沒想過有沒有聽進去,就是把它講完交差了事,遇到大約2-3個這樣的狀況,排除這個問題以外,整體的感覺是不錯的。

檢查報告的部分,PDF電子檔報告要15個工作天寄送電子信箱,實體紙本報告要20個工作天。如果可以當天就知道檢驗結果的話會更好,我之前去的健檢中心都可以做到當天就能看報告還有醫生跟你一起看,然後之後報告再寄送。

最後誠心建議,很久沒健康檢查的各位,要定期去做檢康檢查唷!不要工作忙碌就忘記去檢查唷!身體跟汽車一樣也是要進場保養維修,這樣才能開更久遠。

附上本次的健檢中心資訊,
官網連結:信義101健康管理診所
地址:台北市信義區信義路五段8號4樓

如果你覺得我的分享寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

3 種 Python 字串搜尋並且忽略大小寫方法

本篇 ShengYu 介紹 3 種 Python 字串搜尋並且忽略大小寫方法,在 Python 程式設計中,字串搜尋是一個常見且重要的操作。無論是檢查使用者輸入,還是從大量資料中篩選特定資訊,能夠有效地搜尋字串都是至關重要的。而在進行字串搜尋時,我們經常需要忽略大小寫。本文將介紹幾種在 Python 中搜尋字串並忽略大小寫的方法。

方法一:使用 in 來進行大小寫無關的搜尋

in 關鍵字是 Python 中最簡單的字串搜尋方法之一。要忽略大小寫,可以將字串和關鍵字都轉換為小寫或大寫後再進行比較。

1
2
3
4
5
6
7
keyword = "python"
text = "I love programming in Python."

if keyword.lower() in text.lower():
print("Keyword found!")
else:
print("Keyword not found.")

這種方法直觀且易於實現,非常適合用於簡單的字串匹配需求。

方法二:使用 casefold() 進行更強大的大小寫無關搜尋

casefold() 方法比 lower() 更強大,因為它不僅可以處理 ASCII 字元,還能處理其他語言中的字元。這使得它在國際化應用中尤為有效。

1
2
3
4
5
6
7
keyword = "python"
text = "I love programming in Python."

if keyword.casefold() in text.casefold():
print("Keyword found!")
else:
print("Keyword not found.")

方法三:使用正則表達式進行大小寫無關的搜尋

正則表達式(Regular Expressions, 簡稱 regex)是一種功能強大的字串處理工具。在 Python 中,我們可以使用 re 模組並指定 re.IGNORECASE 標誌來進行不區分大小寫的匹配。

1
2
3
4
5
6
7
8
9
import re

keyword = "python"
text = "I love programming in Python."

if re.search(keyword, text, re.IGNORECASE):
print("Keyword found!")
else:
print("Keyword not found.")

這種方法適用於更複雜的匹配需求,例如模式匹配或多次出現的關鍵字。

小結

在 Python 中搜尋字串並忽略大小寫有多種方法可以選擇。使用 in 關鍵字、casefold() 方法以及正則表達式都能達到這個目的。根據具體需求選擇合適的方法,可以讓你的程式更加高效和準確。希望這些方法能幫助你在 Python 字串處理上更加得心應手。

以上就是 3 種在 Python 中進行字串搜尋且忽略大小寫的常用方法介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
Python 新手入門教學懶人包
4 種 Python 字串中搜尋關鍵字的方法
Python str.find() 用法與範例
Python str 字串用法與範例

4 種 Python 字串中搜尋關鍵字的方法

本篇 ShengYu 介紹 4 種 Python 字串中搜尋關鍵字的方法,在 Python 中,搜尋字串中的關鍵字是一項常見且基本的操作。無論是處理文字資料、過濾日誌檔案,還是開發網頁爬蟲,了解如何在字串中搜尋關鍵字都十分重要。本文將介紹四種在 Python 中搜尋關鍵字的方法,幫助你更有效地處理文字資料。

1. 使用 in 運算子

in 運算子是 Python 中最簡單且直觀的方法之一。它用於檢查子串是否存在於另一個字串中。

1
2
3
4
5
6
7
text = "Python is a powerful programming language."
keyword = "powerful"

if keyword in text:
print("Keyword found!")
else:
print("Keyword not found.")

這種方法簡潔明瞭,非常適合用於簡單的存在性檢查。

2. 使用 str.find() 方法

str.find() 方法回傳子串在字串中的最低索引值,如果未找到子串,則回傳 -1。

1
2
3
4
5
6
7
8
text = "Python is a powerful programming language."
keyword = "powerful"

position = text.find(keyword)
if position != -1:
print(f"Keyword found at position {position}.")
else:
print("Keyword not found.")

這種方法比 in 運算子提供更多的資訊,如子串的具體位置。

3. 使用 re 模組進行正則表達式搜尋

re 模組允許使用正則表達式進行更複雜的模式對應。

1
2
3
4
5
6
7
8
9
import re

text = "Python is a powerful programming language."
keyword = "powerful"

if re.search(keyword, text):
print("Keyword found!")
else:
print("Keyword not found.")

正則表達式適合需要進行複雜模式對應的情況,例如在文字中搜尋多個變化形式的關鍵字。

4. 使用 str.index() 方法

str.index() 方法類似於 str.find(),但當子串未找到時會引發 ValueError 異常。

1
2
3
4
5
6
7
8
text = "Python is a powerful programming language."
keyword = "powerful"

try:
position = text.index(keyword)
print(f"Keyword found at position {position}.")
except ValueError:
print("Keyword not found.")

這種方法適合需要處理異常情況的應用場景。

結語

了解和掌握不同的搜尋方法能夠幫助你在處理文字資料時更靈活應對各種需求。每種方法都有其獨特的優勢和適用場景,選擇合適的方法可以使你的程式碼更加高效和可讀性更高。

以上就是 4 種 Python 字串中搜尋關鍵字的方法的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
Python 新手入門教學懶人包
3 種 Python 字串搜尋並且忽略大小寫方法
Python str.find() 用法與範例
Python str 字串用法與範例

Linux pstree 指令用法範例

本篇 ShengYu 介紹 Linux pstree 指令用法,pstree 是一個用於以樹狀結構顯示行程的 Linux 指令。它可以幫助您更清晰地了解系統中執行的行程及其之間的關係,例如:我想要知道這個執行緒是在哪個父行程裡的,或者我想要知道這個行程裡有哪些子執行緒,使用 pstree 超方便一目瞭然。現在讓我們來簡單介紹一下 pstree 指令的基本用法、其他常見用法和一些進階技巧以及常用選項。

基本用法

要使用 pstree,只需在終端中輸入以下指令:

1
pstree

這將顯示當前系統中執行的所有行程的樹狀結構。每個行程的名稱將按照其隸屬關係進行縮進。

其他常見用法

pstree 指令顯示指定行程的樹狀結構:

1
pstree -p PID

這將僅顯示指定行程 ID(PID)的樹狀結構。將 PID 替換為要查詢的行程 ID。

pstree 指令顯示完整的行程指令行:

1
pstree -a

這將顯示每個行程的完整指令行,而不僅僅是行程名。

pstree 常用選項

當你在 Linux 系統中執行 pstree 指令時,你可以使用一些選項來調整它的行為。以下是一些常用的選項及其說明:
-p:顯示每個行程的行程 ID(PID)。
-n:按行程 ID(PID)進行數字排序。
-u:顯示每個行程的使用者名稱和 UID。
-G:將與當前使用者相關的行程以及其父行程用顏色高亮顯示。
-h:高亮顯示指定的 PID 及其祖先。
-H:高亮顯示當前 pstree 指令的 PID 及其祖先。
-a:顯示行程的指令行參數。
-l:以長格式顯示,包括 PID、PPID、PGID 和 SID。
-s:顯示每個行程的行程組 ID(PGID)。

這些選項可以根據你的需求來定制 pstree 指令的輸出,以便更好地理解系統中行程的層次結構。

結語

透過 pstree 指令,您可以以一種清晰易懂的方式查看系統中執行的行程及其之間的隸屬關係。這對於理解系統的執行狀況和行程之間的相互作用非常有用。請記住,在進行系統故障排查或性能優化時,pstree 是一個非常實用的工具。

以上就是 Linux pstree 指令用法範例的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
Linux 常用指令教學懶人包
Linux wget 下載檔案用法與範例
Linux sed 字串取代用法與範例
Linux find 尋找檔案/尋找資料夾用法與範例
Linux grep/ack/ag 搜尋字串用法與範例
Linux tee 同時螢幕標準輸出和輸出到檔案用法與範例
Linux xargs 參數清單轉換用法與範例
Linux tail 持續監看檔案輸出用法與範例
Linux du 查詢硬碟剩餘空間/資料夾容量用法與範例

使用 PHP 的 PDO 進行資料庫操作:入門指南

本篇 ShengYu 介紹 PHP 和 PDO 進行資料庫操作用法,在 PHP 開發中,與資料庫進行互動是一個常見的需求。PDO(PHP Data Objects)是一個提供一致接口來訪問多種資料庫的擴展。PDO 使得處理不同資料庫(如 MySQL、PostgreSQL、SQLite 等)變得更加容易和一致。本文將介紹如何使用 PDO 進行基本的資料庫操作,包括連線資料庫、執行查詢、插入、更新和刪除資料。

什麼是 PDO?

PDO(PHP Data Objects)是一個物件導向的資料庫抽象層,旨在提高安全性和開發效率,同時提供一致的語法以支援多種資料庫。PDO 的功能和特點如下:

  1. 通用性強:PDO 支援多種資料庫系統,如 MySQL、MS SQL、ODBC、PostgreSQL、SQLite、Firebird、Informix 等。這意味著只要更換連線的資料庫驅動程式,程式碼無需更改即可適用於不同的資料庫系統。

  2. 語法一致性:無論 PHP 版本如何,PDO 的語法在所有支援的資料庫系統中都是一致的。這與 MySQL 驅動(如 mysqlmysqli)不同,後者在不同 PHP 版本中可能需要不同的語法。

  3. 物件導向設計:PDO 採用物件導向的設計,使得程式碼更具結構性和可讀性。物件導向的方式也更容易進行模組化和重用。

  4. 增強安全性:PDO 提供了預處理語句和參數化查詢,有效防止 SQL 注入攻擊。這些功能允許開發者安全地處理來自使用者輸入的資料,減少潛在的安全風險。

  5. 方便的資料操作:PDO 支援將查詢結果轉換為對應的 PHP 物件或陣列,使得資料操作更加方便和直觀。例如,使用 fetchObject() 方法可以直接將資料庫查詢結果轉換為 PHP 物件。

  6. 內建於 PHP 5.5 以上版本:從 PHP 5.5 開始,PDO 已內建於 PHP 核心,無需額外安裝。這使得 PDO 成為一個非常方便和強大的選擇。

綜上所述,PDO 是 PHP 開發中一個強大且靈活的資料庫操作工具。它不僅提供了跨資料庫的通用語法,還透過物件導向和安全性增強的設計,提高了開發效率和應用程式的安全性。

1. 建立 PDO 連線

首先,我們需要建立一個 PDO 物件來連線資料庫。這需要提供資料來源名稱(DSN)、使用者名和密碼。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
try {
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = 'password';

// 建立 PDO 連線
$pdo = new PDO($dsn, $username, $password);

// 設定 PDO 錯誤模式為異常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "連線成功";
} catch (PDOException $e) {
echo "連線失敗: " . $e->getMessage();
}
?>

這段程式碼中,我們建立了一個 PDO 實例並設定錯誤模式為異常,以便在出現錯誤時能夠更容易地進行除錯。

2. 執行 SQL 查詢

使用 query 方法

對於不需要參數的簡單查詢,我們可以使用 query 方法:

1
2
3
4
5
6
<?php
$sql = "SELECT * FROM users";
foreach ($pdo->query($sql) as $row) {
print_r($row);
}
?>

使用 prepareexecute 方法

對於需要參數的查詢,應使用 prepare 方法來防止 SQL 注入攻擊:

1
2
3
4
5
6
7
8
<?php
$sql = "SELECT * FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => 1]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

print_r($user);
?>

3. 插入資料

使用 prepareexecute 方法插入資料:

1
2
3
4
5
6
7
<?php
$sql = "INSERT INTO users (username, email) VALUES (:username, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['username' => 'shengyu', 'email' => 'shengyu@example.com']);

echo "新記錄插入成功,ID: " . $pdo->lastInsertId();
?>

4. 更新資料

同樣地,可以使用 prepareexecute 方法更新資料:

1
2
3
4
5
6
7
<?php
$sql = "UPDATE users SET email = :email WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['email' => 'newemail@example.com', 'id' => 1]);

echo "記錄更新成功";
?>

5. 刪除資料

使用 prepareexecute 方法刪除資料:

1
2
3
4
5
6
7
<?php
$sql = "DELETE FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => 1]);

echo "記錄刪除成功";
?>

6. 關閉連線

在 PHP 中,當 PDO 物件被銷毀時,連線會自動關閉。因此,不需要顯式地關閉連線。

總結

PDO 提供了一個靈活且安全的方式來處理資料庫操作。透過使用 prepareexecute 方法,可以有效地防止 SQL 注入攻擊。PDO 的一致性和易用性使得它成為 PHP 開發人員處理資料庫操作的首選工具。

以上就是 PHP 和 PDO 進行資料庫操作的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
如果你想學習 PHP 相關技術,可以參考看看下面的文章,
PHP 和 MySQLi 進行資料庫操作
PHP 執行發生錯誤在 Chrome/Firefox 上顯示 Error 500,要怎麼讓 PHP 顯示錯誤

Google Sheets 累計月份金額或數字

某天 ShengYu 在紀錄自己的收入時,發現需要將每個月份的多個收入累計起來,這時候就是要出動 Excel,喔不,現在這個時代就是要善用雲端工具,所以本篇介紹 Google Sheets 的做法,在 Google Sheets 中,你可以使用 SUMIFSUMIFS 函數來累計某個月份的金額。假設你有一個表格,其中有一列是日期(例如 A 列),另一列是金額(例如 B 列)。你可以通過以下步驟來累計某個月份的金額:

方法 1:使用 SUMIF 函數

假設你想累計 2024 年 6 月的金額,可以使用以下公式:

1
=SUMIF(A:A, ">=2024-06-01", B:B) - SUMIF(A:A, ">=2024-07-01", B:B)

這個公式的意思是:

  1. 累計 2024 年 6 月 1 日及之後的金額。
  2. 減去 2024 年 7 月 1 日及之後的金額,這樣就只剩下 2024 年 6 月的金額。

方法 2:使用 SUMIFS 函數

SUMIFS 函數允許你設置多個條件來進行篩選,這樣可以更加準確。假設你仍然想累計 2024 年 6 月的金額,可以使用以下公式:

1
=SUMIFS(B:B, A:A, ">=2024-06-01", A:A, "<2024-07-01")

這個公式的意思是:

  1. 篩選出日期在 2024 年 6 月 1 日及之後的數據。
  2. 再篩選出日期在 2024 年 7 月 1 日之前的數據。
  3. 最後累計符合條件的金額。

假設你的表格數據如下:

日期 金額
2024-06-01 100
2024-06-15 200
2024-07-01 150
2024-06-20 300
2024-05-30 50

在 C1 單元格中輸入公式 =SUMIFS(B:B, A:A, ">=2024-06-01", A:A, "<2024-07-01"),結果將會是 600,因為 2024 年 6 月的所有金額(100 + 200 + 300)都被累計起來了。

這樣你就可以輕鬆地在 Google Sheets 中累計某個月份的金額了。

這個公式怎麼套用在 2022 跟 2023 年呢?

那這個公式怎麼套用在 2022 跟 2023 年呢?如果你希望公式可以更靈活,能夠輸入年份和月份來進行累計,可以使用 DATE 函數來生成正確的日期,並且自動處理月份進位。以下是改進後的公式:

假設你在 D1 單元格中輸入年份,在 E1 單元格中輸入月份,則可以使用以下公式來自動累計:

1
=SUMIFS(B:B, A:A, ">=" & DATE(D1, E1, 1), A:A, "<" & DATE(D1, E1 + 1, 1))

這樣,即使 E1 單元格中的月份超過 12,DATE 函數也會自動處理進位。例如小於 DATE(2022, 12 + 1, 1)的話,那麼結果會自動變成 2023-01-01。

假設你的表格數據如下:

日期 金額
2023-06-01 100
2023-06-15 200
2023-07-01 150
2023-06-20 300
2022-06-01 400
2022-06-15 500
2022-07-01 250
2022-06-20 600

D1 單元格輸入 2023,在 E1 單元格輸入 6,然後在其他單元格輸入公式:

1
=SUMIFS(B:B, A:A, ">=" & DATE(D1, E1, 1), A:A, "<" & DATE(D1, E1 + 1, 1))

這樣的話,結果將會是 600,因為 2023 年 6 月的所有金額(100 + 200 + 300)都被累計起來了。

類似地,如果在 D1 單元格輸入 2022,在 E1 單元格輸入 6,公式會自動累計 2022 年 6 月的金額,結果將會是 1500(400 + 500 + 600)。

這樣,你就可以靈活地在不同年份和月份之間切換,並且不必擔心月份進位問題。

或著你可以使用 EOMONTH 來取得每月的最後一天日期也可以達成

以上就是 Google Sheets 累計月份金額或數字介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

Linux watch 指令用法與範例

本篇 ShengYu 介紹 Linux watch 指令用法與範例,在 Linux 系統中,watch 指令是一個強大的工具,它允許使用者定期執行指定的指令並顯示其輸出,這在許多情況下都非常有用。無論是監視系統狀態、跟蹤檔案變化還是測試指令的執行情況,watch 都能夠輕鬆應對。在本文中,我們將深入探討 watch 指令的基本用法、進階技巧以及一些實用的應用場景。

基本用法

watch 指令的基本用法非常簡單,只需在終端中輸入 watch,然後跟上要執行的指令即可。也就是說 watch 會幫你下這串指令,例如,要每隔一秒執行一次 date 指令,可以使用以下指令:

1
watch date

這將在終端上顯示當前的日期和時間,並每秒更新一次。

定期執行指令並顯示結果

除了這種基本用法之外,watch 還提供了一些選項,用於自定義其行為。例如,可以使用 -n 選項來指定更新的間隔時間。以下指令將每隔五秒執行一次 ls -l 指令:

1
watch -n 5 ls -l

更改間隔時間

這個指令每隔3秒執行一次 ls -l

1
watch -n 3 ls -l

這個指令每隔0.5秒執行一次 ls -l

1
watch -n 0.5 ls -l

進階技巧

watch 指令的進階技巧使其更加靈活和強大。其中一個常用的技巧是使用 -d 選項來突出顯示指令輸出中發生變化的部分。這對於監視檔案變化或系統狀態非常有用。以下是一個範例:

1
watch -d df -h

這將每隔兩秒執行一次 df -h 指令,並在終端上突出顯示檔案系統使用情況發生變化的部分。

另一個有用的技巧是使用 -t 選項顯示當前的時間。這對於記錄指令執行的時間非常有用。例如:

1
watch -t date

這將每隔一秒執行一次 date 指令,並在終端上顯示當前的時間。

此外,watch 還允許使用者自定義終端視窗的標題,這可以透過 --title 選項實現。以下是一個範例:

1
watch --title="Custom Title" -n 10 -d df -h

這將在終端視窗的標題中顯示”Custom Title”,並每隔十秒突出顯示檔案系統使用情況發生變化的部分。

實用應用場景

除了上述基本用法和進階技巧之外,watch 指令還有許多實用的應用場景。以下是一些範例:

  1. 監視日誌檔案的變化:
1
watch tail /var/log/syslog

這將持續監視系統日誌檔案的變化,並將新的日誌內容顯示在終端上。

  1. 監視網路連接狀態:
1
watch -n 5 netstat -tuln

這將每隔五秒顯示一次系統中所有的 TCP 和 UDP 網路連接。

  1. 監視系統資源使用率:
1
watch -n 1 top

這將每秒顯示一次系統中各個行程的資源利用情況,包括 CPU 和記憶體使用情況。

總結

watch 指令是一個非常實用的工具,它可以幫助使用者輕鬆監視和跟蹤各種指令的執行情況。透過了解其基本用法、進階技巧以及實用的應用場景,使用者可以更好地利用這個功能強大的指令,提高工作效率,更好地管理和監控 Linux 系統。

以上就是 Linux watch 指令用法與範例的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
Linux 常用指令教學懶人包
Linux wget 下載檔案用法與範例
Linux sed 字串取代用法與範例
Linux find 尋找檔案/尋找資料夾用法與範例
Linux grep/ack/ag 搜尋字串用法與範例
Linux tee 同時螢幕標準輸出和輸出到檔案用法與範例
Linux xargs 參數列表轉換用法與範例
Linux tail 持續監看檔案輸出用法與範例
Linux du 查詢硬碟剩餘空間/資料夾容量用法與範例

Python 中的 subprocess.run 完整指南與範例

本篇 ShengYu 介紹 Python subprocess.run 用法與範例,在現代編程中,經常需要從 Python 程式中執行系統指令或外部程式。Python 提供了多種方式來實現這一點,其中最強大和靈活的工具之一就是 subprocess 模組中的 subprocess.run 函式。本文將詳盡介紹 subprocess.run 的用途、語法,並透過具體範例來展示其應用。

subprocess.run 的用途

subprocess.run 是一個用於執行系統指令或外部程式的高級接口。它允許開發者執行指令、等待指令完成、檢查指令的退出狀態碼,並選擇性地取得指令的標準輸出和標準錯誤。這使得 subprocess.run 成為一個非常靈活和強大的工具,適合各種需要與外部程式互動的場景。

subprocess.run 的語法

1
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)

參數說明

  • args:這是要執行的指令及其參數,通常以清單形式提供,例如 ['ls', '-l']
  • stdinstdoutstderr:分別指定標準輸入、標準輸出和標準錯誤的處理方式。
  • capture_output:若設定為 True,將捕獲標準輸出和標準錯誤。
  • shell:若設定為 True,指令將透過 shell 執行(例如 bashcmd)。
  • cwd:設定指令執行的當前工作目錄。
  • timeout:設定指令執行的超時時間(以秒為單位)。
  • check:若設定為 True,當指令回傳非零退出狀態時將拋出 CalledProcessError
  • encodingerrors:設定標準輸入、輸出和錯誤的編碼和錯誤處理。
  • textuniversal_newlines:若設定為 True,將輸入和輸出視為文字流,而非位元組流。
  • env:提供一個字典來設定環境變數。

範例 1:執行一個簡單的指令

以下範例示範如何使用 subprocess.run 執行一個簡單的指令並打印其輸出:

1
2
3
4
import subprocess

result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)

這段程式碼執行 ls -l 指令並打印輸出到控制台。透過設定 capture_output=Truetext=True,我們能夠捕獲並以文字形式處理指令的標準輸出。

範例 2:檢查指令的退出狀態

在某些情況下,我們需要檢查指令的退出狀態以確定其是否成功執行。以下範例展示了如何實現這一點:

1
2
3
4
5
6
7
import subprocess

result = subprocess.run(['ls', '-l', '/nonexistent'], capture_output=True, text=True)
if result.returncode != 0:
print("Error:", result.stderr)
else:
print(result.stdout)

這段程式碼執行 ls -l /nonexistent 指令,如果目錄不存在,則會打印錯誤資訊。

範例 3:在 shell 中執行指令

有時我們需要透過 shell 來執行指令,例如使用環境變數。以下範例展示了如何設定 shell=True 來達成這一目標:

1
2
3
4
import subprocess

result = subprocess.run('echo $HOME', shell=True, capture_output=True, text=True)
print(result.stdout)

這段程式碼在 shell 中執行 echo $HOME 指令並打印出環境變數 HOME 的值。

範例 4:處理指令超時

在某些情況下,指令可能會執行很長時間。在這種情況下,我們可以設定超時來防止指令無限期地執行:

1
2
3
4
5
6
import subprocess

try:
result = subprocess.run(['sleep', '5'], timeout=2)
except subprocess.TimeoutExpired:
print("Command timed out")

這段程式碼嘗試執行 sleep 5 指令,但設定了 2 秒的超時時間。由於指令需要更長時間才能完成,因此會拋出 TimeoutExpired 異常。

結論

subprocess.run 是 Python 中一個非常有用的函式,用於執行外部指令並處理其輸出。透過理解其各種參數和選項,您可以靈活地將其應用於多種場景,無論是簡單的指令執行還是複雜的行程管理。本文透過具體的範例展示了 subprocess.run 的一些常見用法,希望能幫助您更好地掌握這個強大的工具。

透過這些範例和解釋,相信您已經對 subprocess.run 有了一個全面的了解。不妨在自己的項目中嘗試使用,進一步體會其強大和靈活性。

以上就是 Python subprocess.run 用法與範例的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
Python 新手入門教學懶人包
Python subprocess.call 用法與範例解析
Python subprocess.Popen 用法與範例
Python swap 用法與範例
如何在Python中使用SQLite:完整指南與實用範例
Python 與 MongoDB 的完美結合:詳細指南與範例

Android dumpsys 指令用法與範例

本篇 ShengYu 介紹 Android dumpsys 指令用法,dumpsys 是 Android 系統提供的一個用於查看系統服務資訊的指令。它可以提供關於系統狀態、各種服務、行程和其他詳細資訊的報告。現在讓我們來看一下它的基本用法以及其他常見和進階的用法。

基本用法

dumpsys 指令的基本用法如下:

1
dumpsys [service]

其中,service 是要查看的系統服務的名稱。

要查看系統中所有可用的服務,只需在終端中輸入以下指令:

1
dumpsys

這將列出系統中所有可用的服務列表。

要查看特定服務的詳細資訊,只需在指令後跟上服務名稱。例如,要查看電池資訊,可以使用以下指令:

1
dumpsys battery

這將顯示有關電池狀態的詳細資訊,如電量、充電狀態等。

其他常見用法

dumpsys 指令查看記憶體資訊,用法如下,

1
dumpsys meminfo

這將顯示有關系統記憶體使用情況的詳細資訊,包括記憶體占用、行程列表等。

dumpsys 指令查看網路資訊,用法如下,

1
dumpsys connectivity

這將顯示有關網路連接狀態的詳細資訊,包括當前的網路類型、IP 地址等。

進階用法

dumpsys 指令匯出資訊到檔案,用法如下,

1
dumpsys battery > battery_info.txt

這將將電池資訊保存到指定的檔案中,方便後續查閱和分析。

dumpsys 指令監視系統狀態,用法如下,

1
watch -n 5 dumpsys meminfo

這將每隔五秒更新一次系統的記憶體資訊,可以用於監視系統的記憶體使用情況。

dumpsys 指令查看指定應用的資訊,用法如下,

1
dumpsys package com.example.app

這將顯示指定應用的詳細資訊,包括行程 ID、UID、版本資訊等。

總結

dumpsys 指令是 Android 系統中一個非常有用的工具,可以幫助開發人員和使用者查看系統的各種詳細資訊。透過了解其基本用法、其他常見用法和進階用法,使用者可以更好地了解和監視系統的執行狀態,從而進行故障排查、性能優化等工作。無論是開發中還是使用者使用中,dumpsys 都是一個非常實用的指令。

以上就是 Android dumpsys 指令用法與範例的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
Android 系列文章
Android adb 基本用法教學
Android fastboot 基本用法教學
Android adb logcat 基本用法教學
Android adb forward 通訊埠轉發用法教學
Android adb shell input 事件用法
Android 更換 line 的通知鈴聲方法

使用 PHP 和 MySQLi 進行資料庫操作的簡單指南

本篇 ShengYu 介紹 PHP 和 MySQLi 進行資料庫操作用法,在這篇文章中,我們將介紹如何使用 PHP 和 MySQLi 來進行基本的資料庫操作。MySQLi(MySQL Improved)是一個用於訪問 MySQL 資料庫的 PHP 擴展,提供了比舊的 MySQL 擴展更好的功能和性能。

1. 連線資料庫

首先,我們需要連線 MySQL 資料庫。這可以透過 mysqli_connect() 函式來實現。以下是範例程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test_db";

// 建立連線
$conn = mysqli_connect($servername, $username, $password, $database);

// 檢查連線
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

這段程式碼嘗試連線到名為 test_db 的資料庫。如果連線失敗,會輸出錯誤資訊並終止腳本。

2. 執行 SQL 查詢

連線成功後,我們可以使用 mysqli_query() 函式來執行 SQL 查詢。以下是插入資料和查詢資料的範例。

插入資料

我們可以使用如下程式碼插入一條新記錄到 users 表中:

1
2
3
4
5
6
7
8
<?php
$sql = "INSERT INTO users (username, email) VALUES ('shengyu', 'shengyu@example.com')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
?>

查詢資料

接下來,我們來查詢 users 表中的資料:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql = "SELECT id, username, email FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
// 輸出資料
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["username"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "0 results";
}
?>

3. 關閉連線

操作完成後,別忘了關閉連線:

1
2
3
<?php
mysqli_close($conn);
?>

完整範例

最後,我們將上述步驟整合成一個完整的範例,展示如何連線到資料庫、插入資料、查詢資料以及關閉連線:

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
32
33
34
35
36
37
38
39
<?php
$servername = "localhost";
$username = "root";
password = "";
$database = "test_db";

// 建立連線
$conn = mysqli_connect($servername, $username, $password, $database);

// 檢查連線
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully<br>";

// 插入資料
$sql = "INSERT INTO users (username, email) VALUES ('shengyu', 'shengyu@example.com')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully<br>";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

// 查詢資料
$sql = "SELECT id, username, email FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
// 輸出資料
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["username"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "0 results";
}

// 關閉連線
mysqli_close($conn);
?>

這個範例展示了如何使用 MySQLi 進行基本的資料庫操作,包括連線到資料庫、插入資料、查詢資料以及關閉連線。在實際應用中,應該新增更多的錯誤處理和安全措施,比如使用預處理語句來防止 SQL 注入攻擊。希望這篇文章能夠幫助你更好地理解和使用 MySQLi。

以上就是 PHP 和 MySQLi 進行資料庫操作用法的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
如果你想學習 PHP 相關技術,可以參考看看下面的文章,
PHP 和 PDO 進行資料庫操作
PHP 執行發生錯誤在 Chrome/Firefox 上顯示 Error 500,要怎麼讓 PHP 顯示錯誤