欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 軟件研發 > python如何實現日常工作自動化?

python如何實現日常工作自動化?

2020-07-24 14:49:01 | 來源:中培企業IT培訓網

大多數作業具有可以自動執行的重復性任務,從而節省了一些寶貴的時間。這使自動化成為一項關鍵技能。一小撮熟練的自動化工程師和領域專家也許可以自動化整個團隊中許多最繁瑣的任務。那么python如何實現日常工作自動化?在本文中,我們將探討使用Python(一種功能強大且易于學習的編程語言)的工作流自動化的基礎。我們將使用Python編寫一個簡單而有用的自動化小腳本,該腳本將清理給定的文件夾并將每個文件放入相應的文件夾中。

我們的目標不是在一開始就編寫完美的代碼或創建理想的體系結構。我們也不會建立任何“非法”的東西。相反,我們將研究如何創建一個腳本,該腳本會自動清理給定的文件夾及其所有文件。

  一、自動化領域和起點

自動化技術適用于大多數領域。對于初學者來說,它有助于完成諸如從一堆文檔中提取電子郵件地址之類的任務,以便您可以進行電子郵件爆炸。或更復雜的方法,例如優化大型公司內部的工作流程和流程。

當然,從小型的個人腳本到替代實際人員的大型自動化基礎架構涉及學習和改進的過程。因此,讓我們看看您可以從何處開始旅程。

  簡單自動化

簡單的自動化實現了快速直接的切入點。這可以涵蓋小的獨立過程,例如項目清理和目錄內文件的重組,也可以包括工作流的某些部分,例如自動調整已保存文件的大小。

  公共API自動化

公共API自動化是最常見的自動化形式,因為如今我們可以使用對API的HTTP請求來訪問大多數功能。例如,如果您想在家中自動為自制的智能花園澆水。

為此,您想檢查當天的天氣,看看是否需要澆水或是否有雨來。

API逆向工程

在實際的漫游器中,基于API逆向工程的自動化更為常見,在下面的“道德注意事項”部分中,該圖表的“ Bot Imposter”部分中也是如此。

通過對API進行反向工程,我們可以了解應用程序的用戶流程。一個例子是登錄在線瀏覽器游戲。

通過了解登錄和身份驗證過程,我們可以使用自己的腳本來復制該行為。然后,即使他們自己不提供應用程序,我們也可以創建自己的接口來使用該應用程序。

無論您要采用哪種方法,請始終考慮它是否合法。

您不想惹麻煩,對嗎?

  二、道德考量

GitHub上的某個人曾經與我聯系并告訴我:

“喜歡和參與是數字貨幣,您正在貶值它們。”

這讓我感到困惑,并讓我質疑我為此目的而構建的工具。

這些互動和參與可以自動化并“偽造”的事實越來越多,這導致了社交媒體系統的扭曲和破壞。

如果人們不使用漫游器和其他互動系統,那么產生有價值和優質內容的人將對其他用戶和廣告公司不可見。

我的一個朋友想出了以下但丁與但丁的“地獄九圈”的聯系,在每一步中,隨著成為社會影響者的步伐越來越近,您將越來越不了解整個系統的實際破壞力。

我想在這里與您分享這件事,因為我認為這是我與InstaPy積極與網紅合作時親眼所見的非常準確的代表。

等級1:凌波-如果您;

等級2:調情 -當您手動喜歡并關注盡可能多的人時,請他們跟著您回去/喜歡您的帖子;

等級3:陰謀 -當您加入電報組喜歡和評論10張照片,因此接下來的10個人將喜歡和評論您的照片;

等級4:不忠 -當您使用低成本的虛擬助手代表您喜歡和關注時;

等級5:欲望-當您使用機器人給予喜歡,但沒有得到任何回報(但您不為此付費(例如,Chrome擴展程序));

級別6:濫交-當您使用機器人給予50多個喜歡得到50多個喜歡的人,但您無需為此付費-例如,Chrome擴展程序;

等級7:貪婪或極端貪婪 -當您使用漫游器在200-700張照片之間點贊/關注/評論時,忽略了被禁止的機會;

等級8:賣淫 -當您支付未知的第三者服務進行自動對等時喜歡/關注您,但他們使用您的帳戶喜歡/關注;

第9級:欺詐/異端 -當您購買關注者和喜歡并嘗試將自己賣給有影響力的品牌時。

社交媒體上的惡意攻擊程度如此之高,以至于如果您不進行機器人操作,那么您將被困在Limbo 1級,相對于同齡人而言,追隨者的成長率和參與度都不高。

在經濟學理論上,這被稱為囚徒困境和零和博弈。如果我不機器人,而你又機器人,你贏了。如果您不是機器人,而我是機器人,我會贏。如果沒有機器人,那么所有人都會贏。但是,由于沒有人人都不要機器人,所以沒有人能贏。

注:永遠不要忘記整個工具對社交媒體的影響。

我們希望避免處理道德問題,而仍在此處從事自動化項目。這就是為什么我們將創建一個簡單的目錄清理腳本來幫助您整理凌亂文件夾的原因。

  三、創建目錄清理腳本

現在,我們要看一個非常簡單的腳本。通過基于文件擴展名將這些文件移動到相應的文件夾中,它會自動清理給定目錄。

因此,我們要做的就是:

  1.設置參數解析器

由于我們正在使用操作系統功能(如移動文件),因此需要導入os庫。除此之外,我們還希望使用戶可以控制要清理的文件夾。我們將argparse為此使用庫。

import os

import argparse

導入兩個庫之后,我們首先設置參數解析器。確保為每個添加的參數提供描述和幫助文本,以在用戶鍵入內容時為用戶提供有價值的幫助--help。

我們的論點將命名為--path。名稱前面的雙破折號告訴庫這是一個可選參數。默認情況下,我們要使用當前目錄,因此將默認值設置為"."。

parser = argparse.ArgumentParser(

description="Clean up directory and put files into according folders."

)

parser.add_argument(

"--path",

type=str,

default=".",

help="Directory path of the to be cleaned directory",

)

# parse the arguments given by the user and extract the path

args = parser.parse_args()

path = args.path

print(f"Cleaning up directory {path}")

這樣就完成了參數解析部分–它非常簡單易讀,對吧?

讓我們執行腳本并檢查錯誤。

python directory_clean.py --path ./test

=> Cleaning up directory ./test

執行后,我們可以看到目錄名稱已完美打印到控制臺。

現在讓我們使用該os庫來獲取給定路徑的文件。

  2. 從文件夾中獲取文件列表

通過使用該os.listdir(path)方法并為其提供有效路徑,我們獲得了該目錄內所有文件和文件夾的列表。

在列出文件夾中的所有元素之后,我們不想在文件夾和文件夾之間進行區分,因為我們不想清理文件夾,而只清理文件。

在這種情況下,我們使用Python列表推導來遍歷所有元素,如果它們滿足作為文件或文件夾的給定要求,則將它們放到新列表中。

# get all files from given directory

dir_content = os.listdir(path)

# create a relative path from the path to the file and the document name

path_dir_content = [os.path.join(path, doc) for doc in dir_content]

# filter our directory content into a documents and folders list

docs = [doc for doc in path_dir_content if os.path.isfile(doc)]

folders = [folder for folder in path_dir_content if os.path.isdir(folder)]

# counter to keep track of amount of moved files

# and list of already created folders to avoid multiple creations

moved = 0

created_folders = []

print(f"Cleaning up {len(docs)} of {len(dir_content)} elements.")

與往常一樣,讓我們確保我們的用戶得到反饋。因此,添加一條打印語句,以向用戶指示要移動多少文件。

python directory_clean.py --path ./test

=> Cleaning up directory ./test

=> Cleaning up 60 of 60 elements.

重新執行python腳本后,我們現在可以看到/test我創建的文件夾包含60個將被移動的文件。

  3.為每個文件擴展名創建一個文件夾

現在,下一步也是更重要的一步是為每個文件擴展名創建文件夾。為此,我們要瀏覽所有過濾的文件,如果它們的擴展名沒有文件夾,請創建一個。

該os庫可為我們提供更好的功能,例如拆分給定文檔的文件類型和路徑,提取路徑本身和文檔名稱。

# go through all files and move them into according folders

for doc in docs:

# separte name from file extension

full_doc_path, filetype = os.path.splitext(doc)

doc_path = os.path.dirname(full_doc_path)

doc_name = os.path.basename(full_doc_path)

print(filetype)

print(full_doc_path)

print(doc_path)

print(doc_name)

break

上面代碼末尾的break語句可確保如果目錄中包含數十個文件,我們的終端也不會被發送垃圾郵件。

設置好之后,讓我們執行腳本以查看類似于以下內容的輸出:

python directory_clean.py --path ./test

=> ...

=> .pdf

=> ./test/test17

=> ./test

=> test17

現在我們可以看到上面的實現分離了文件類型,然后從完整路徑中提取了部分。

由于我們現在具有文件類型,因此我們可以檢查是否存在具有該類型名稱的文件夾。

在此之前,我們要確保跳過一些文件。如果我們使用當前目錄"."作為路徑,則需要避免移動python腳本本身。一個簡單的if條件可以解決這個問題。

除此之外,我們不想移動“ 隱藏文件”,因此我們也包括所有以點開頭的文件。.DS_StoremacOS上的文件是隱藏文件的示例。

# skip this file when it is in the directory

if doc_name == "directory_clean" or doc_name.startswith('.'):

continue

# get the subfolder name and create folder if not exist

subfolder_path = os.path.join(path, filetype[1:].lower())

if subfolder_path not in folders:

# create the folder

處理完python腳本和隱藏文件后,我們現在可以繼續在系統上創建文件夾。

除了檢查之外,如果在讀取目錄內容時文件夾已經存在,那么一開始,我們需要一種跟蹤已創建文件夾的方法。這就是我們宣布該created_folders = []名單的原因。它將用作跟蹤文件夾名稱的存儲器。

要創建一個新文件夾,該os庫提供了一個名為的方法,該方法os.mkdir(folder_path)采用一個路徑并在那里創建一個具有給定名稱的文件夾。

此方法可能會引發異常,告訴我們該文件夾已存在。因此,我們還要確保捕獲該錯誤。

if subfolder_path not in folders and subfolder_path not in created_folders:

try:

os.mkdir(subfolder_path)

created_folders.append(subfolder_path)

print(f"Folder {subfolder_path} created.")

except FileExistsError as err:

print(f"Folder already exists at {subfolder_path}... {err}")

設置文件夾創建后,讓我們重新執行腳本。

python directory_clean.py --path ./test

=> ...

=> Folder ./test/pdf created.

在第一次執行時,我們可以看到一個日志列表,告訴我們已經創建了具有給定類型的文件擴展名的文件夾。

4.將每個文件移到右子文件夾中

現在的最后一步是將文件實際移到其新的父文件夾中。

使用os操作時要了解的重要一點是,有時無法撤消操作。例如,這就是刪除的情況。因此,首先僅注銷執行腳本將實現的行為是有意義的。

這就是為什么該os.rename(...)方法在這里被評論的原因。

# get the new folder path and move the file

new_doc_path = os.path.join(subfolder_path, doc_name) + filetype

# os.rename(doc, new_doc_path)

moved += 1

print(f"Moved file {doc} to {new_doc_path}")

執行完腳本并查看正確的日志記錄之后,我們現在可以在os.rename()方法前刪除注釋哈希,并最終進行注釋。

# get the new folder path and move the file

new_doc_path = os.path.join(subfolder_path, doc_name) + filetype

os.rename(doc, new_doc_path)

moved += 1

print(f"Moved file {doc} to {new_doc_path}")

print(f"Renamed {moved} of {len(docs)} files.")

python directory_clean.py --path ./test

=> ...

=> Moved file ./test/test17.pdf to ./test/pdf/test17.pdf

=> ...

=> Renamed 60 of 60 files.

現在,此最終執行會將所有文件移動到它們相應的文件夾中,并且無需手動操作即可很好地清理我們的目錄。

在下一步中,我們現在可以使用上面創建的腳本,例如,安排它在每個星期一執行,以清理我們的Downloads文件夾以獲得更多結構。

以上即是關于python如何實現日常工作自動化的全部內容,想了解更多關于python的信息,請繼續關注中培偉業吧。

主站蜘蛛池模板: 小荡货腿张开让我cao爽视频 | 成人免费无码A毛片 | 久久大香国产成人AV | 精品日产卡一卡二卡国色天香 | 337P大尺度啪啪人体 | 国产各种高潮合集在线观看 | 综合欧美亚洲日本少妇 | 午夜免费学生在线观看av | 男人肌肌捅女人肌肌视频 | 92午夜免费福利757 | 老司机免费福利在线观看 | 日日摸日日踫夜夜爽无码久久 | 中日韩精品视频一区二区三区 | 高清精品一区二区三区 | 国产在线精品亚洲第一区香蕉 | 妺妺窝人体色www美国 | 熟女俱乐部五十路六十路av | 亚洲男人的天堂视频 | 91美女在线播放 | 强被迫伦姧惨叫在线视频 | 日韩一卡2卡3卡4卡乱码网站导航 | 欧美日韩网址 | 国产喷水1区2区3区咪咪爱AV | 老师你兔子好软水好多视频 | 中文一国产一无码一日韩 | 中文字幕无码人妻丝袜 | 亚洲老妇老熟妇 | JLZZJLZZ全部女高潮 | 亚洲人精品午夜射精日韩 | 国产亚洲一区精品 | 亚洲AV无码专区在线观看成人 | 亚洲国产精品无码中文在线 | 色草视频| 人妻校园激情另类 | 波多野结衣在线观看中文字幕 | 日本成人福利视频 | 一区二区三区内射美女毛片 | 狠狠色噜噜狠狠狠狠888米奇 | 国产精品无码制服丝袜 | 美女极品粉嫩美鮑20P图 | 久久免费在线观看 |