中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

在什么網(wǎng)站做推廣最好鞍山seo公司

在什么網(wǎng)站做推廣最好,鞍山seo公司,計算機學(xué)院網(wǎng)站建設(shè)系統(tǒng)可行性分析,網(wǎng)站收錄方法目錄 1. 生成隨機文本 2. 計算文本文件中的字數(shù) 3. 替換文件文件中的字串 4. 多文件名的批量替換 5. 從網(wǎng)站提取數(shù)據(jù) 6. 批量下載圖片 7.批量刪除空文件夾 8.Excel表格讀寫 9.合并Excel表格工作簿 10.數(shù)據(jù)庫SQL查詢 11. 系統(tǒng)進程查殺 12.圖像尺寸調(diào)整和裁剪 13.圖…

目錄

1. 生成隨機文本

2. 計算文本文件中的字數(shù)

3. 替換文件文件中的字串

4. 多文件名的批量替換

5. 從網(wǎng)站提取數(shù)據(jù)

6. 批量下載圖片

7.批量刪除空文件夾

8.Excel表格讀寫

9.合并Excel表格工作簿

10.數(shù)據(jù)庫SQL查詢

11. 系統(tǒng)進程查殺

12.圖像尺寸調(diào)整和裁剪

13.圖片添加水印

14. 創(chuàng)建圖像縮略圖

15.PDF中提取文本

16. 合并多個PDF文件


1. 生成隨機文本

import random
import string
def generate_random_text(length):letters = string.ascii_letters + string.digits + string.punctuationrandom_text = ''.join(random.choice(letters) for i in range(length))return random_text

函數(shù)generate_random_text接受一個參數(shù)length,用于指定生成的隨機文本的長度。函數(shù)內(nèi)部,它首先定義了一個letters字符串,包含了所有的ASCII字母(大寫和小寫)、數(shù)字以及標點符號。然后,它使用列表推導(dǎo)式和random.choice函數(shù)從letters中隨機選擇字符,并將這些字符連接成一個字符串。最后,函數(shù)返回這個隨機生成的字符串。以下是對代碼的詳細解釋:

  1. import random
    導(dǎo)入Python的random模塊,該模塊提供了生成隨機數(shù)的功能。

  2. import string
    導(dǎo)入Python的string模塊,該模塊包含了一些常用的字符串常量,如ASCII字母、數(shù)字、標點符號等。

  3. def generate_random_text(length):
    定義了一個名為generate_random_text的函數(shù),該函數(shù)接受一個參數(shù)length,表示要生成的隨機文本的長度。

  4. letters = string.ascii_letters + string.digits + string.punctuation
    創(chuàng)建了一個名為letters的字符串,該字符串包含了所有ASCII字母(大寫和小寫)、數(shù)字以及標點符號。這是為了確保生成的隨機文本可以包含這些字符。

  5. random_text = ''.join(random.choice(letters) for i in range(length))
    使用列表推導(dǎo)式(list comprehension)和random.choice函數(shù)來生成隨機文本。

    • random.choice(letters):從letters字符串中隨機選擇一個字符。
    • for i in range(length):循環(huán)length次,確保生成的隨機文本長度為length
    • ''.join(...):將生成的隨機字符列表連接成一個字符串。
  6. return random_text
    返回生成的隨機文本字符串。

2. 計算文本文件中的字數(shù)

def count_words(file_path):with open(file_path, 'r') as f:text = f.read()word_count = len(text.split())return word_count

函數(shù)count_words接受一個文件路徑file_path作為參數(shù),并返回該文件中單詞的數(shù)量。以下是函數(shù)的詳細解釋:

  1. def count_words(file_path):
    這是函數(shù)的定義行,其中count_words是函數(shù)名,file_path是唯一的參數(shù)。

  2. with open(file_path, 'r') as f:
    使用with語句和open函數(shù)來打開指定路徑file_path的文件。文件以只讀模式('r')打開,并將其文件對象賦值給變量f。with語句確保文件在操作完成后會被正確關(guān)閉。

  3. text = f.read()
    讀取文件對象f中的所有內(nèi)容,并將其作為字符串賦值給變量text。

  4. word_count = len(text.split())
    text.split()方法用于將text字符串按照空格分割成一個單詞列表。split()方法默認使用空格作為分隔符,因此它會分割字符串中所有的空格(包括單詞間的空格、換行符后的空格等)。len()函數(shù)則用于計算這個列表中元素的數(shù)量,即單詞的數(shù)量。

  5. return word_count
    函數(shù)返回計算得到的單詞數(shù)量。

請注意,這個函數(shù)簡單地通過空格來分割單詞,因此可能無法正確處理某些復(fù)雜情況,比如標點符號緊挨著單詞、縮寫詞等。對于更準確的單詞計數(shù),可能需要使用更復(fù)雜的文本處理庫,如NLTK(Natural Language Toolkit)或正則表達式。

此外,如果文件非常大,使用f.read()將整個文件內(nèi)容讀入內(nèi)存可能會導(dǎo)致內(nèi)存不足。在這種情況下,可以考慮逐行讀取文件并計算單詞數(shù)量,以節(jié)省內(nèi)存。

3. 替換文件文件中的字串

def find_replace(file_path, search_text, replace_text):with open(file_path, 'r') as f:text = f.read()modified_text = text.replace(search_text, replace_text)with open(file_path, 'w') as f:f.write(modified_text)

函數(shù)?find_replace?執(zhí)行了一個常見的文本文件操作:查找并替換文件中的文本。以下是該函數(shù)的詳細解釋:

  1. def find_replace(file_path, search_text, replace_text):
    定義了一個名為?find_replace?的函數(shù),它接受三個參數(shù):file_path(要操作的文件路徑),search_text(要在文件中查找的文本),和?replace_text(用于替換找到的文本的文本)。

  2. with open(file_path, 'r') as f:
    使用?with?語句和?open?函數(shù)以只讀模式('r')打開指定路徑?file_path?的文件,并將文件對象賦值給變量?f。

  3. text = f.read()
    讀取文件對象?f?中的所有內(nèi)容,并將其作為字符串賦值給變量?text。

  4. modified_text = text.replace(search_text, replace_text)
    使用字符串的?replace?方法將?text?中的所有?search_text?實例替換為?replace_text。替換后的文本存儲在?modified_text?變量中。

  5. with open(file_path, 'w') as f:
    再次使用?with?語句和?open?函數(shù),但這次以寫入模式('w')打開相同的文件路徑?file_path。如果文件已存在,這個操作會覆蓋文件的現(xiàn)有內(nèi)容。如果文件不存在,會創(chuàng)建一個新文件。

  6. f.write(modified_text)
    將修改后的文本?modified_text?寫入到文件對象中,從而更新文件內(nèi)容。

請注意,這個函數(shù)有幾個潛在的問題和限制:

  • 如果文件非常大,將整個文件讀入內(nèi)存并進行替換操作可能會消耗大量內(nèi)存。
  • 使用?'w'?模式打開文件會覆蓋文件的原始內(nèi)容,如果替換操作失敗,可能會導(dǎo)致數(shù)據(jù)丟失。
  • 該函數(shù)不會備份原始文件,所以在進行替換操作之前,最好先備份文件。
  • 函數(shù)沒有處理可能出現(xiàn)的異常,如文件不存在、無法讀取或?qū)懭氲取?/li>

在實際應(yīng)用中,可能需要根據(jù)具體需求對這些潛在問題進行適當(dāng)?shù)奶幚怼?/p>

4. 多文件名的批量替換

import os
def rename_files(directory_path, old_name, new_name):for filename in os.listdir(directory_path):if old_name in filename:new_filename = filename.replace(old_name, new_name)os.rename(os.path.join(directory_path,filename),os.path.join(directory_path, new_filename))

函數(shù)?rename_files?的目的是重命名指定目錄中的文件。函數(shù)接受三個參數(shù):directory_path(目錄路徑),old_name(要在文件名中查找并替換的舊名稱),和?new_name(用于替換舊名稱的新名稱)。以下是對函數(shù)的詳細解釋:

  1. import os
    導(dǎo)入Python的?os?模塊,該模塊提供了與操作系統(tǒng)交互的功能,如文件操作、路徑名操作等。

  2. def rename_files(directory_path, old_name, new_name):
    定義了一個名為?rename_files?的函數(shù),該函數(shù)接受三個參數(shù):目錄路徑、舊文件名部分和新文件名部分。

  3. for filename in os.listdir(directory_path):
    使用?os.listdir()?函數(shù)列出指定目錄?directory_path?下的所有文件和子目錄名稱。然后,對于目錄中的每個文件(包括子目錄),函數(shù)會執(zhí)行以下操作。

  4. if old_name in filename:
    檢查當(dāng)前處理的文件名?filename?是否包含?old_name。如果包含,則執(zhí)行下面的代碼塊。

  5. new_filename = filename.replace(old_name, new_name)
    使用字符串的?replace()?方法將文件名?filename?中的?old_name?替換為?new_name。替換后的新文件名存儲在?new_filename?變量中。

  6. os.rename(os.path.join(directory_path, filename), os.path.join(directory_path, new_filename))
    使用?os.rename()?函數(shù)重命名文件。os.path.join(directory_path, filename)?用于構(gòu)建文件的完整路徑(包括目錄和文件名),同樣地,os.path.join(directory_path, new_filename)?用于構(gòu)建新文件名的完整路徑。這兩個路徑分別作為?os.rename()?函數(shù)的第一個和第二個參數(shù),表示要重命名的原始文件和新文件的路徑。

注意:

  • 如果目錄中包含子目錄,這個函數(shù)也會嘗試重命名子目錄,這可能會導(dǎo)致錯誤,因為子目錄通常不能被簡單地重命名。
  • 如果目錄中存在多個文件包含相同的?old_name,這個函數(shù)會重命名所有這些文件,即使它們的擴展名不同。
  • 這個函數(shù)不會處理文件重名的情況。如果新文件名與現(xiàn)有文件名沖突,os.rename()?會引發(fā)一個異常。
  • 函數(shù)沒有處理可能出現(xiàn)的異常,如權(quán)限問題或文件不存在等。在實際應(yīng)用中,可能需要添加異常處理邏輯。

5. 從網(wǎng)站提取數(shù)據(jù)

import requests
from bs4 import BeautifulSoup
def scrape_data(url):response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')

這段代碼是Python中用于網(wǎng)絡(luò)爬蟲的一個簡單示例,具體用于從給定的URL地址抓取數(shù)據(jù)。這里使用了requests庫來發(fā)送HTTP請求,以及BeautifulSoup庫來解析HTML內(nèi)容。下面是對代碼的逐行解釋:

  1. import requests
    導(dǎo)入requests庫,這是一個用于發(fā)送HTTP請求的庫,可以輕松地發(fā)送GET、POST等請求。

  2. from bs4 import BeautifulSoup
    bs4(BeautifulSoup 4)庫中導(dǎo)入BeautifulSoup類。BeautifulSoup用于解析HTML和XML文檔,并提供了簡單、靈活的方法來遍歷、搜索、修改分析樹等功能。

  3. def scrape_data(url):
    定義一個名為scrape_data的函數(shù),該函數(shù)接受一個參數(shù)url,這個參數(shù)代表要抓取的網(wǎng)頁的URL地址。

  4. response = requests.get(url)
    使用requests庫的get方法向給定的url發(fā)送一個HTTP GET請求。服務(wù)器的響應(yīng)會被存儲在response變量中。

  5. soup = BeautifulSoup(response.text, 'html.parser')
    response中的文本內(nèi)容(即網(wǎng)頁的HTML源代碼)傳遞給BeautifulSoup類,并指定使用html.parser作為解析器。這樣,BeautifulSoup就可以將HTML代碼解析成一個易于操作和查詢的數(shù)據(jù)結(jié)構(gòu)(通常是一個樹形結(jié)構(gòu))。解析后的數(shù)據(jù)存儲在soup變量中。

一旦你有了soup這個BeautifulSoup對象,你就可以使用它的方法來查找和提取網(wǎng)頁中的特定元素、屬性或文本內(nèi)容了。例如,你可以使用soup.find()soup.find_all()等方法來搜索特定的HTML標簽或?qū)傩?#xff0c;以及使用.text屬性來獲取元素的文本內(nèi)容等。

請注意,這段代碼只是網(wǎng)絡(luò)爬蟲的一部分,它只負責(zé)從網(wǎng)頁上抓取數(shù)據(jù)。如果你想要對抓取到的數(shù)據(jù)進行進一步的處理或分析,你還需要編寫更多的代碼來實現(xiàn)這些功能。此外,在使用網(wǎng)絡(luò)爬蟲時,請務(wù)必遵守網(wǎng)站的robots.txt規(guī)則以及相關(guān)法律法規(guī),不要進行惡意爬取或侵犯他人隱私。

6. 批量下載圖片

import requests
def download_images(url, save_directory):response = requests.get(url)if response.status_code == 200:images = response.json() # Assuming the API returns a JSON array of image URLsfor index, image_url in enumerate(images):image_response = requests.get(image_url)if image_response.status_code == 200:with open(f"{save_directory}/image_{index}.jpg", "wb") as f:f.write(image_response.content)

函數(shù)?download_images?用于從指定的 URL 下載多個圖像,并將它們保存到指定的目錄中。以下是對代碼的逐行解釋:

  1. import requests:
    導(dǎo)入 Python 的?requests?庫,這是一個用于發(fā)送 HTTP 請求的庫。

  2. def download_images(url, save_directory)::
    定義一個名為?download_images?的函數(shù),該函數(shù)接受兩個參數(shù):url?和?save_directory。url?是要請求的 API 的 URL,該 API 應(yīng)返回一個包含多個圖像 URL 的 JSON 數(shù)組;save_directory?是要保存下載圖像的目錄路徑。

  3. response = requests.get(url):
    使用?requests?庫的?get?方法發(fā)送一個 HTTP GET 請求到?url?指定的地址,并將響應(yīng)對象存儲在?response?變量中。

  4. if response.status_code == 200::
    檢查 HTTP 響應(yīng)的狀態(tài)碼是否為 200,這表示請求成功。

  5. images = response.json():
    如果響應(yīng)成功,使用?response.json()?方法解析響應(yīng)的 JSON 內(nèi)容,并將解析后的結(jié)果(應(yīng)是一個圖像 URL 的數(shù)組)存儲在?images?變量中。

  6. for index, image_url in enumerate(images)::
    使用?enumerate?函數(shù)遍歷?images?數(shù)組,同時獲取每個圖像的索引(index)和 URL(image_url)。

  7. image_response = requests.get(image_url):
    對于每個圖像 URL,發(fā)送另一個 HTTP GET 請求以獲取該圖像,并將響應(yīng)對象存儲在?image_response?變量中。

  8. if image_response.status_code == 200::
    再次檢查 HTTP 響應(yīng)的狀態(tài)碼是否為 200,以確保圖像請求成功。

  9. with open(f"{save_directory}/image_{index}.jpg", "wb") as f::
    使用?with?語句打開一個文件,文件路徑由?save_directory?和?image_{index}.jpg?組成,文件模式為 "wb"(二進制寫入模式)。這意味著我們將以二進制格式將圖像寫入文件。

  10. f.write(image_response.content):
    將?image_response?中的內(nèi)容(即圖像的二進制數(shù)據(jù))寫入到文件中。

這樣,該函數(shù)將遍歷從 API 返回的所有圖像 URL,下載每個圖像,并將它們以?image_0.jpg,?image_1.jpg,?image_2.jpg?等的名稱保存到指定的目錄中。

注意:

  • 該代碼假設(shè) API 返回的 JSON 數(shù)組中的每個元素都是一個有效的圖像 URL。
  • 代碼沒有處理可能出現(xiàn)的異常,如網(wǎng)絡(luò)錯誤、無效的 JSON 響應(yīng)或無法寫入文件等。在實際應(yīng)用中,添加異常處理邏輯是很重要的。
  • 文件名使用索引編號,如果下載多個圖像可能會有命名沖突的問題。在實際應(yīng)用中,可能需要考慮使用更獨特的文件名,例如基于圖像 URL 的哈希值。

7.批量刪除空文件夾

import os
def remove_empty_folders(directory_path):for root, dirs, files in os.walk(directory_path, topdown=False):for folder in dirs:folder_path = os.path.join(root, folder)if not os.listdir(folder_path):os.rmdir(folder_path)

函數(shù)?remove_empty_folders?用于刪除給定目錄(及其子目錄)中的所有空文件夾。以下是對代碼的逐行解釋:

  1. import os:
    導(dǎo)入Python的os模塊,該模塊提供了與操作系統(tǒng)交互的函數(shù)和方法。

  2. def remove_empty_folders(directory_path)::
    定義一個名為remove_empty_folders的函數(shù),它接受一個參數(shù)directory_path,該參數(shù)代表要檢查并刪除空文件夾的目錄路徑。

  3. for root, dirs, files in os.walk(directory_path, topdown=False)::
    使用os.walk()函數(shù)遍歷directory_path目錄及其所有子目錄。os.walk()返回一個三元組(dirpath, dirnames, filenames),其中:

    • dirpath是一個字符串,表示目錄的路徑。
    • dirnames是一個列表,包含了dirpath目錄下的所有子目錄名(不包括...,即不包括當(dāng)前目錄和父目錄)。
    • filenames是一個列表,包含了dirpath目錄下的所有非目錄子項的名字。

    topdown參數(shù)設(shè)置為False意味著先遍歷子目錄,再遍歷父目錄。這有助于在刪除子目錄時不會影響到父目錄的遍歷。

  4. for folder in dirs::
    對于當(dāng)前遍歷到的目錄(root)下的每一個子目錄名(folder),執(zhí)行以下操作。

  5. folder_path = os.path.join(root, folder):
    使用os.path.join()函數(shù)將當(dāng)前目錄路徑root和子目錄名folder拼接成一個完整的路徑folder_path

  6. if not os.listdir(folder_path)::
    使用os.listdir()函數(shù)檢查folder_path是否為空。如果folder_path沒有包含任何文件或子目錄,則os.listdir(folder_path)將返回一個空列表,條件判斷為True。

  7. os.rmdir(folder_path):
    如果上述條件判斷為真,即folder_path是一個空文件夾,則使用os.rmdir()函數(shù)刪除該空文件夾。

這個函數(shù)將遍歷給定目錄及其所有子目錄,并刪除所有空文件夾。注意,這個函數(shù)不會刪除包含隱藏文件或子目錄的空文件夾,也不會刪除非空文件夾。

8.Excel表格讀寫

import pandas as pd
def read_excel(file_path):df = pd.read_excel(file_path)return df
def write_to_excel(data, file_path):df = pd.DataFrame(data)df.to_excel(file_path, index=False)

函數(shù)?read_excel?和?write_to_excel,用于讀取和寫入 Excel 文件。兩個函數(shù)都使用了 Pandas 庫,一個 Python 的數(shù)據(jù)分析庫。?

1.?read_excel 函數(shù)

這個函數(shù)接受一個參數(shù)?file_path,表示要讀取的 Excel 文件的路徑。

2.?write_to_excel 函數(shù)

這個函數(shù)接受兩個參數(shù):data?和?file_path。data?是一個字典、列表或其他可以被轉(zhuǎn)換為 DataFrame 的數(shù)據(jù)結(jié)構(gòu),file_path?是要寫入數(shù)據(jù)的 Excel 文件的路徑。

通過這兩個函數(shù),你可以方便地讀取和寫入 Excel 文件,而不需要關(guān)心底層的 Excel 文件操作細節(jié)。

9.合并Excel表格工作簿

import pandas as pd
def merge_sheets(file_path, output_file_path):xls = pd.ExcelFile(file_path)df = pd.DataFrame()for sheet_name in xls.sheet_names:sheet_df = pd.read_excel(xls, sheet_name)df = df.append(sheet_df)df.to_excel(output_file_path, index=False)

函數(shù)?merge_sheets?用于將多個 Excel 工作表(sheets)合并到一個單一的 DataFrame 中,并將該 DataFrame 保存到一個新的 Excel 文件中。以下是代碼的逐行解釋:

  1. import pandas as pd
    導(dǎo)入 pandas 庫,并為其指定一個別名?pd。Pandas 是一個用于數(shù)據(jù)分析和處理的 Python 庫。

  2. def merge_sheets(file_path, output_file_path):
    定義一個名為?merge_sheets?的函數(shù),該函數(shù)接受兩個參數(shù):file_path(要合并的 Excel 文件的路徑)和?output_file_path(輸出文件的路徑)。

  3. xls = pd.ExcelFile(file_path)
    使用 pandas 的?ExcelFile?類來讀取?file_path?指定的 Excel 文件,并將其存儲在?xls?變量中。

  4. df = pd.DataFrame()
    創(chuàng)建一個空的 DataFrame 對象?df。這個 DataFrame 將用于存儲從 Excel 文件的不同工作表中讀取的數(shù)據(jù)。

  5. for sheet_name in xls.sheet_names:
    遍歷?xls?對象中存儲的所有工作表名稱。sheet_names?是一個包含所有工作表名稱的列表。

  6. sheet_df = pd.read_excel(xls, sheet_name)
    對于每一個工作表名稱?sheet_name,使用?read_excel?函數(shù)從?xls?對象中讀取該工作表的數(shù)據(jù),并將其存儲在?sheet_df(一個 DataFrame 對象)中。

  7. df = df.append(sheet_df)
    將?sheet_df?中的數(shù)據(jù)追加到?df?中。這樣,df?最終將包含所有工作表的數(shù)據(jù)。

  8. df.to_excel(output_file_path, index=False)
    將合并后的 DataFrame?df?保存到指定的?output_file_path?路徑。index=False?表示在保存時不包含 DataFrame 的索引。

需要注意的是,雖然這段代碼能夠合并多個工作表,但它有一個效率問題。在循環(huán)中,每次迭代都會將?sheet_df?追加到?df?并立即保存到?output_file_path。這意味著每次迭代都會覆蓋之前的輸出文件。實際上,你可能只想在循環(huán)結(jié)束后保存一次合并后的 DataFrame。正確的做法應(yīng)該是將?df.to_excel(output_file_path, index=False)?語句移出循環(huán),放在循環(huán)結(jié)束之后。這樣,所有工作表的數(shù)據(jù)都會被合并到一個 DataFrame 中,然后一次性保存到輸出文件。

10.數(shù)據(jù)庫SQL查詢

import sqlite3
def connect_to_database(database_path):connection = sqlite3.connect(database_path)return connection
def execute_query(connection, query):cursor = connection.cursor()cursor.execute(query)result = cursor.fetchall()return result

這段代碼的兩個函數(shù)分別用于連接數(shù)據(jù)庫及執(zhí)行SQL查詢。以下是代碼的逐行解釋:

  1. 導(dǎo)入sqlite3模塊:這行代碼導(dǎo)入了Python的sqlite3模塊,該模塊提供了一個輕量級的磁盤上數(shù)據(jù)庫,不需要單獨的服務(wù)器進程或系統(tǒng)配置。

  2. connect_to_database函數(shù):接受一個參數(shù)database_path,它代表要連接的SQLite數(shù)據(jù)庫文件的路徑。

  3. execute_query函數(shù):這個函數(shù)接受兩個參數(shù):connection:一個到SQLite數(shù)據(jù)庫的連接對象,通常是通過connect_to_database 函數(shù)獲得的。?query:一個SQL查詢字符串,你希望執(zhí)行這個查詢來從數(shù)據(jù)庫中檢索數(shù)據(jù)。?

使用示例:

# 連接到數(shù)據(jù)庫  
conn = connect_to_database('example.db')  # 創(chuàng)建一個新的表  
create_table_query = '''  
CREATE TABLE IF NOT EXISTS users (  id INTEGER PRIMARY KEY,  name TEXT NOT NULL,  age INTEGER  
)  
'''  
execute_query(conn, create_table_query)  # 插入一些數(shù)據(jù)  
insert_data_query = '''  
INSERT INTO users (name, age) VALUES (?, ?)  
'''  
execute_query(conn, insert_data_query, ('Alice', 30))  
execute_query(conn, insert_data_query, ('Bob', 25))  # 查詢所有數(shù)據(jù)  
select_all_query = 'SELECT * FROM users'  
users = execute_query(conn, select_all_query)  
for user in users:  print(user)  # 關(guān)閉連接  
conn.close()

11. 系統(tǒng)進程查殺

import psutil
def get_running_processes():return [p.info for p in psutil.process_iter(['pid', 'name', 'username'])]
def kill_process_by_name(process_name):for p in psutil.process_iter(['pid', 'name', 'username']):if p.info['name'] == process_name:p.kill()

這段代碼使用了?psutil?庫來查詢和管理操作系統(tǒng)中的進程。psutil?是一個跨平臺庫,能夠獲取系統(tǒng)運行狀態(tài)信息,包括 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)、進程等。代碼中定義了兩個函數(shù):

  1. get_running_processes(): 這個函數(shù)返回一個包含當(dāng)前運行的所有進程信息的列表。每個進程信息是一個字典,包含進程ID(pid)、進程名稱(name)和進程所屬用戶名(username)。?

  2. kill_process_by_name(process_name): 這個函數(shù)接受一個進程名稱作為參數(shù),并嘗試殺死(結(jié)束)所有與該名稱匹配的進程。

這里有一些要注意的點:

  • psutil.process_iter()?函數(shù)用于遍歷系統(tǒng)中的所有進程。你可以通過傳遞一個字段列表來限制返回的信息量,這里我們只關(guān)心進程的 pid、name 和 username。
  • p.info?是一個字典,包含了進程的所有信息。我們通過?p.info['name']?來獲取進程的名稱。
  • p.kill()?方法用于結(jié)束進程。這個方法會發(fā)送一個 SIGTERM 信號給進程,告訴它應(yīng)該優(yōu)雅地關(guān)閉。如果進程不響應(yīng),可能會發(fā)送一個 SIGKILL 信號來強制結(jié)束它。

請注意,結(jié)束進程(特別是你沒有權(quán)限結(jié)束的進程)可能會引發(fā)異常。在實際使用中,你可能需要添加適當(dāng)?shù)腻e誤處理邏輯來處理這些異常。

此外,使用?kill_process_by_name?函數(shù)時要小心,因為它會無條件地殺死所有匹配的進程,這可能會導(dǎo)致不期望的行為。你可能需要添加一些額外的邏輯來確認你要結(jié)束的進程確實是你想要的,或者至少確保你不會意外地結(jié)束重要的系統(tǒng)進程。

12.圖像尺寸調(diào)整和裁剪

from PIL import Image
def resize_image(input_path, output_path, width, height):image = Image.open(input_path)resized_image = image.resize((width, height), Image.ANTIALIAS)resized_image.save(output_path)
def crop_image(input_path, output_path, left, top, right, bottom):image = Image.open(input_path)cropped_image = image.crop((left, top, right, bottom))cropped_image.save(output_path)

函數(shù) resize_image?和?crop_image?分別用于調(diào)整圖像的大小和裁剪圖像。這些函數(shù)都使用了Pillow庫(PIL),這是一個用于處理圖像的庫。

  1. resize_image?函數(shù):

    • 參數(shù)

      • input_path:要調(diào)整大小的圖像的輸入路徑。
      • output_path:調(diào)整大小后的圖像的輸出路徑。
      • width:新圖像的寬度。
      • height:新圖像的高度。
    • 功能

      • 打開位于?input_path?的圖像。
      • 使用?Image.ANTIALIAS?作為重采樣方法,將圖像的大小調(diào)整為?width?和?height。ANTIALIAS 是一種高質(zhì)量的重采樣濾鏡,可以減少調(diào)整大小時產(chǎn)生的鋸齒狀邊緣。
      • 保存調(diào)整大小后的圖像到?output_path。
  2. crop_image?函數(shù):

    • 參數(shù)

      • input_path:要裁剪的圖像的輸入路徑。
      • output_path:裁剪后的圖像的輸出路徑。
      • left:裁剪框的左邊界。
      • top:裁剪框的上邊界。
      • right:裁剪框的右邊界。
      • bottom:裁剪框的下邊界。
    • 功能

      • 打開位于?input_path?的圖像。
      • 使用?crop?方法,根據(jù)提供的?left、top、right?和?bottom?邊界裁剪圖像。
      • 保存裁剪后的圖像到?output_path。

這些函數(shù)為圖像處理提供了基本的功能,可以幫助你輕松地調(diào)整圖像的大小或裁剪圖像。

13.圖片添加水印

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
def add_watermark(input_path, output_path, watermark_text):image = Image.open(input_path)draw = ImageDraw.Draw(image)font = ImageFont.truetype('arial.ttf', 36)draw.text((10, 10), watermark_text, fill=(255, 255, 255, 128), font=font)image.save(output_path)

函數(shù)?add_watermark?用于在給定的圖像上添加水印。水印是一個文本字符串,被放置在圖像的指定位置。這里使用了Python的Pillow庫(PIL的一個分支)來處理圖像。

以下是代碼的詳細解釋:

  1. 導(dǎo)入必要的模塊:

    • Image: 用于打開、處理和保存多種格式的圖像文件。
    • ImageDraw: 提供了簡單的圖形繪制功能,用于在圖像上繪制。
    • ImageFont: 用于處理字體,這樣你就可以在圖像上繪制文本。
  2. 定義?add_watermark?函數(shù):

    • input_path: 要添加水印的原始圖像的路徑。
    • output_path: 添加水印后的圖像的保存路徑。
    • watermark_text: 要作為水印添加到圖像上的文本。
  3. 函數(shù)內(nèi)部邏輯:

    • image = Image.open(input_path): 打開位于?input_path?的圖像文件。
    • draw = ImageDraw.Draw(image): 創(chuàng)建一個可以在上面繪制的Draw對象。
    • font = ImageFont.truetype('arial.ttf', 36): 使用TrueType或OpenType字體文件創(chuàng)建一個字體對象。這里使用了Arial字體,大小為36。你需要確保arial.ttf文件在你的工作目錄中,或者提供正確的路徑。
    • draw.text((10, 10), watermark_text, fill=(255, 255, 255, 128), font=font): 在圖像上的位置(10, 10)繪制水印文本。文本的顏色是白色(RGB值為(255, 255, 255)),并且有一定的透明度(alpha值為128)。
    • image.save(output_path): 保存帶有水印的圖像到output_path指定的路徑。

這個函數(shù)允許你簡單地為圖像添加水印,但你可能需要根據(jù)你的具體需求調(diào)整字體、大小、顏色、位置等參數(shù)。

14. 創(chuàng)建圖像縮略圖

from PIL import Image
def create_thumbnail(input_path, output_path, size=(128, 128)):image = Image.open(input_path)image.thumbnail(size)image.save(output_path)

這段代碼定義了一個名為 create_thumbnail 的函數(shù),用于創(chuàng)建一個指定大小的縮略圖。這個函數(shù)使用了 Python 的 Pillow 庫(PIL 的一個分支)來處理圖像。以下是代碼的詳細解釋:

  1. 導(dǎo)入 Image 類:from PIL import Image,這行代碼從 PIL 庫中導(dǎo)入了 Image 類,該類提供了打開、操作和保存圖像文件的方法。
  2. 定義 create_thumbnail 函數(shù),三個參數(shù)分別為:
    * `input_path`: 輸入圖像的路徑。 ?
    * `output_path`: 縮略圖圖像的保存路徑。 ?
    * `size`: 縮略圖的大小,默認為 `(128, 128)`(即寬度為 128 像素,高度為 128 像素)。
  3. 打開輸入圖像:image = Image.open(input_path)
    這行代碼使用 Image.open 方法打開位于 input_path 的圖像文件,并將其存儲在 image 變量中。
  4. 創(chuàng)建縮略圖:image.thumbnail(size)
    這行代碼使用 Image 對象的 thumbnail 方法來創(chuàng)建縮略圖。thumbnail 方法會保持圖像的縱橫比,同時確保圖像的最大尺寸不超過 size 參數(shù)指定的寬度和高度。如果原始圖像的寬度和高度都小于 size,則圖像不會進行縮放。
  5. 保存縮略圖:image.save(output_path)
    這行代碼將創(chuàng)建好的縮略圖保存到 output_path 指定的路徑。
  6. 調(diào)用示例:使用這個函數(shù),你可以輕松地為任何圖像創(chuàng)建一個指定大小的縮略圖。
    例如:create_thumbnail('path/to/input.jpg', 'path/to/output.jpg', size=(200, 200))
    這行代碼將創(chuàng)建一個最大尺寸為 200x200 像素的縮略圖,并將其保存到 'path/to/output.jpg'。?

15.PDF中提取文本

import PyPDF2
def extract_text_from_pdf(file_path):with open(file_path, 'rb') as f:pdf_reader = PyPDF2.PdfFileReader(f)text = ''for page_num in range(pdf_reader.numPages):page = pdf_reader.getPage(page_num)text += page.extractText()return text

這段代碼是一個用于從PDF文件中提取文本的函數(shù),使用了PyPDF2庫。

  1. 導(dǎo)入PyPDF2庫。
  2. 定義函數(shù)extract_text_from_pdf,它接受一個參數(shù)file_path,這是要從中提取文本的PDF文件的路徑。
  3. 使用with open(file_path, 'rb') as f:打開文件,'rb'表示以二進制讀模式打開文件。
  4. 創(chuàng)建一個PdfFileReader對象pdf_reader來讀取打開的PDF文件。
  5. 初始化一個空字符串text,用于存儲從PDF文件中提取的文本。
  6. 使用for循環(huán)遍歷PDF文件中的每一頁(range(pdf_reader.numPages)生成一個從0到pdf_reader.numPages - 1的整數(shù)序列)。
  7. 對于每一頁,使用getPage(page_num)方法獲取該頁的對象,然后使用extractText()方法提取該頁的文本,并將其添加到text字符串中。
  8. 函數(shù)最后返回存儲了所有提取文本的text字符串。

請注意,PyPDF2extractText()方法可能無法完美地提取所有PDF文件中的文本,特別是對于那些包含復(fù)雜布局或特殊字體的文件。對于這種情況,可能需要使用其他更高級的PDF處理庫,如PDFMinerpdfplumber。

16. 合并多個PDF文件

import PyPDF2  
def merge_pdfs(input_paths, output_path):  pdf_writer = PyPDF2.PdfFileWriter()  for path in input_paths:  with open(path, 'rb') as f:  pdf_reader = PyPDF2.PdfFileReader(f)  for page_num in range(pdf_reader.getNumPages()):  page = pdf_reader.getPage(page_num)  pdf_writer.addPage(page)  with open(output_path, 'wb') as f:  pdf_writer.write(f)

這段代碼使用PyPDF2庫合并多個PDF文件。函數(shù)?merge_pdfs 接受一個包含多個PDF文件路徑的列表input_paths和一個輸出文件路徑output_path。然后,它遍歷輸入文件列表,讀取每個文件,并將每一頁添加到一個PdfFileWriter對象中。最后,它將所有頁面寫入到指定的輸出文件中。以下是這段代碼的逐行解釋:

  1. import PyPDF2
    導(dǎo)入PyPDF2庫,這是一個用于處理PDF文件的Python庫。

  2. def merge_pdfs(input_paths, output_path):
    定義一個名為merge_pdfs的函數(shù),它接受兩個參數(shù):一個包含多個PDF文件路徑的列表input_paths和一個輸出文件路徑output_path

  3. pdf_writer = PyPDF2.PdfFileWriter()
    創(chuàng)建一個PdfFileWriter對象,該對象將用于寫入合并后的PDF文件的內(nèi)容。

  4. for path in input_paths:
    遍歷input_paths列表中的每個文件路徑。

  5. with open(path, 'rb') as f:
    使用with語句打開當(dāng)前路徑下的PDF文件,'rb'表示以二進制讀模式打開文件。文件對象存儲在變量f中。

  6. pdf_reader = PyPDF2.PdfFileReader(f)
    創(chuàng)建一個PdfFileReader對象來讀取打開的PDF文件。

  7. for page_num in range(pdf_reader.getNumPages()):
    遍歷當(dāng)前PDF文件的每一頁。getNumPages()方法返回PDF文件中的頁面數(shù)量。

  8. page = pdf_reader.getPage(page_num)
    使用getPage方法獲取當(dāng)前頁碼對應(yīng)的頁面對象。

  9. pdf_writer.addPage(page)
    將獲取到的頁面對象添加到PdfFileWriter對象中,以便稍后寫入到輸出文件中。

  10. with open(output_path, 'wb') as f:
    使用with語句打開(或創(chuàng)建)輸出文件,準備以二進制寫模式寫入合并后的PDF內(nèi)容。

  11. pdf_writer.write(f)
    PdfFileWriter對象中的所有頁面寫入到輸出文件中。

當(dāng)你調(diào)用這個函數(shù)并傳入一個PDF文件路徑列表和一個輸出文件路徑時,它將讀取所有輸入文件,并將它們的頁面合并到一個單一的輸出文件中。請確保你安裝了PyPDF2庫(使用pip install PyPDF2),并且輸入的PDF文件都是有效的。


http://www.risenshineclean.com/news/32682.html

相關(guān)文章:

  • 哪個網(wǎng)站域名便宜seo報名在線咨詢
  • wordpress調(diào)用指定文章內(nèi)容seo優(yōu)化網(wǎng)站推廣全域營銷獲客公司
  • 網(wǎng)站建設(shè)書本信息網(wǎng)站搜索引擎優(yōu)化的步驟
  • 北京網(wǎng)站設(shè)計方案優(yōu)化品牌seo關(guān)鍵詞
  • 服裝小訂單接單平臺seo網(wǎng)站優(yōu)化推廣費用
  • 網(wǎng)站游戲制作開發(fā)神秘網(wǎng)站
  • 建什么網(wǎng)站能百度收錄國際國內(nèi)新聞最新消息今天
  • 免費php企業(yè)網(wǎng)站源碼關(guān)鍵詞優(yōu)化怎么做
  • 理財平臺網(wǎng)站建設(shè)交換鏈接營銷成功案例
  • 互聯(lián)網(wǎng)行業(yè)信息網(wǎng)站免費b2b網(wǎng)站推廣渠道
  • wordpress圖片燈箱效果修改百度seo營銷推廣
  • 廣州做網(wǎng)站厲害的公司互聯(lián)網(wǎng)營銷師證書騙局
  • 簡單建設(shè)一個網(wǎng)站的過程長春網(wǎng)站seo公司
  • 免費信息網(wǎng)站建設(shè)7個湖北seo網(wǎng)站推廣策略
  • 陜西網(wǎng)站建設(shè)通報網(wǎng)址搜索
  • 做購物網(wǎng)站 需要手續(xù)百度搜索廣告怎么投放
  • 020網(wǎng)站建設(shè)和維護費用數(shù)據(jù)分析培訓(xùn)班
  • 做網(wǎng)站軟件html css百度灰色關(guān)鍵詞代做
  • 東莞做網(wǎng)站價格360網(wǎng)站推廣怎么做
  • 企業(yè)局域網(wǎng)游戲網(wǎng)站如何做限制自動點擊器安卓
  • 哪里有學(xué)編程的培訓(xùn)班神馬seo教程
  • 寧晉網(wǎng)站建設(shè)代理價格深圳百度推廣優(yōu)化
  • 攝影網(wǎng)站建設(shè)廣東廣州疫情最新情況
  • 石家莊網(wǎng)站建設(shè)公司哪家好如何制作網(wǎng)頁鏈接
  • 小兔自助建站百度一下1688
  • 泉州網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣要求
  • 裝修網(wǎng)站怎么做seo 工具
  • 正保建設(shè)工程教育網(wǎng)站線上推廣方式有哪些
  • 家電維修做網(wǎng)站生意怎么樣合肥網(wǎng)站維護公司
  • 徐州網(wǎng)站建設(shè)哪家好企業(yè)管理培訓(xùn)機構(gòu)