當前位置:首頁 » 網頁前端 » python腳本基本操作
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

python腳本基本操作

發布時間: 2022-08-26 08:51:30

1. 零基礎學Python應該學習哪些入門知識

關於零基礎怎麼樣能快速學好Python的問題,網路提問和解答的都很多,你可以網路下看看。我覺得從個人自學的角度出發,應從以下幾個方面來理解:

1 為什麼選擇學python?

據統計零基礎或非專業的人士學python的比較多,據HackerRank開發者調查報告2018年5月顯示(見圖),Python排名第一,成為最受歡迎編程語言。Python以優雅、簡潔著稱,入行門檻低,可以從事Linux運維、Python Web網站工程師、Python自動化測試、數據分析、人工智慧等職位,薪資待遇呈上漲趨勢。

2 入門python需要那些准備?

2.1 心態准備。編程是一門技術,也可說是一門手藝。如同書法、繪畫、樂器、雕刻等,技藝純熟的背後肯定付出了長時間的反復練習。不要相信幾周速成,也不能急於求成。編程的世界浩瀚無邊,所以請保持一顆敬畏的心態去學習,認真對待寫下的每一行代碼,甚至每一個字元。收拾好自己的心態,向著編程的世界出發。第一步至關重要,關繫到初學者從入門到精通還是從入門到放棄。選一條合適的入門道路,並堅持走下去。

2.2 配置 Python 學習環境。選Python2 還是 Python3?入門時很多人都會糾結。二者只是程序不兼容,思想上並無大差別,語法變動也並不多。選擇任何一個入手,都沒有大影響。如果你仍然無法抉擇,那請選擇 Python3,畢竟這是未來的趨勢。

編輯器該如何選?同樣,推薦 pycharm 社區版,配置簡單、功能強大、使用起來省時省心,對初學者友好,並且完全免費!其他編輯器如:notepad++、sublimeText 3、vim 和 Emacs等不推薦了。

操作環境?Python 支持現有所有主流操作平台,不管是 windows 還是 mac 還是 linux,都能很好的運行 Python。並且後兩者都默認自帶 Python 環境。

2.3 選擇自學的書籍。我推薦的書的內容由淺入深,建議按照先後順序閱讀學習:

2.3.1《Python簡明教程》。這是一本言簡意賅的 Python 入門教程,簡單直白,沒有廢話。就算沒有基礎,你也可以像讀小說一樣,花兩天時間就可以讀完。適合入門快速了解語法。

2.3.2 廖雪峰編寫的《Python教程》。廖先生的教程涵蓋了 Python 知識的方方面面,內容更加系統,有一定深度,有一定基礎之後學習會有更多的收獲。

2.4 學會安裝包。Python中有很多擴展包,想要安裝這些包可以採用兩種方法:

2.4.1 使用pip或easy_install。

1)在網上找到的需要的包,下載下來。eg. rsa-3.1.4.tar.gz;

2)解壓縮該文件;

3)命令行工具cd切換到所要安裝的包的目錄,找到setup.py文件,然後輸入python setup.py install

2.4.2 不用pip或easy_install,直接打開cmd,敲pip install rsa。

3 提升階段需要恆心和耐力。

完成入門階段的基礎學習之後,常會陷入一個瓶頸期,通過看教程很難進一步提高編程水平。這時候,需要的是反復練習,大量的練習。可以從書上的例題、作業題開始寫,再寫小程序片段,然後寫完整的項目。我們收集了一些練習題和網站。可根據自己階段,選擇適合的練習去做。建議最好挑選一兩個系列重點完成,而不是淺嘗輒止。

3.1 多做練習。推薦網站練習:

crossin編程教室實例:相對於編程教室基礎練習著重於單一知識點,

編程實例訓練對基礎知識的融會貫通;

hackerrank:Python 部分難度循序漸進,符合學習曲線

實驗樓:提升編程水平從做項目開始;

codewar:社區型編程練習網站,內容由易到難;

leetcode:為編程面試准備,對初學者稍難;

牛客網:提供 BAT 等大廠筆試題目;

codecombat:提供一邊游戲一邊編程;

projecteuler:純粹的編程練習網站;

菜鳥教程100例:基於 py2 的基礎練習;

3.2 遇到問題多交流。

3.2.1 利用好搜索引擎。

3.2.2 求助於各大網站。推薦

stackoverflow:這是一個程序員的知識庫;

v2ex:國內非常不錯的編程社區,不僅僅是包含程序,也包含了程序員的生活;

segmentfault:一家以編程問答為主的網站;

CSDN、知乎、簡書等

3.2.3 加入相關的QQ、微信群、網路知道。不懂的可以隨時請教。

2. 如何在Windows環境下運行Python腳本

1、在windows系統中運行python腳本,需要安裝windows版本的python,可以到官方網站下載與操作系統對應的版本。python windows版本官網下載地址: https://www.python.org/downloads/windows/

3. 如何在python腳本中運行腳本文件

最近有個需求就是頁面上執行shell命令,第一想到的就是os.system,

復制代碼代碼如下:

os.system('cat /proc/cpuinfo')

但是發現頁面上列印的命令執行結果 0或者1,當然不滿足需求了。

嘗試第二種方案 os.popen()

復制代碼代碼如下:

output = os.popen('cat /proc/cpuinfo')
print output.read()

通過 os.popen() 返回的是 file read 的對象,對其進行讀取 read() 的操作可以看到執行的輸出。但是無法讀取程序執行的返回值)

嘗試第三種方案 commands.getstatusoutput() 一個方法就可以獲得到返回值和輸出,非常好用。

復制代碼代碼如下:

(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status, output

Python Document 中給的一個例子,

復制代碼代碼如下:

>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'

最後頁面上還可以根據返回值來顯示命令執行結果。

4. Linux 下Python 腳本編寫的"奇技淫巧"

「 生命完美的答案,無非走過沒有遺憾 ---《天藍》」

「如何能夠解析腳本運行命令行選項(位於 sys.argv 中)」

argparse 模塊可被用來解析命令行選項

常用來定義一個腳本的說明文檔,一般我們寫python腳本會通過 if..else 的方式來提供一個腳本說明文檔,python不支持switch。所以很麻煩,其實,我們可以通過 argparse 來編寫說明文檔。

我們來看看怎麼執行一個python腳本

對於熟悉Linux的小夥伴下面的文檔在熟悉不過了,這個一個標准Linxu軟體包的說明文檔,文檔中定義是軟體包的說明

來看看這個腳本是如何編寫的

為了解析命令行選項, 首先要創建一個 ArgumentParser 實例, 使用 add_argument() 方法聲明你想要支持的選項。在每個 add-argument() 調用中:

dest 參數指定解析結果被指派給屬性的名字。 metavar 參數被用來生成幫助信息。

action 參數 指定跟屬性對應的處理邏輯,通常的 值為 store , 被用來存儲 某個值 或將 多個參數值收集到一個列表中 。

nargs 參數收集 所有剩餘的命令行參數到一個列表中。在本例中它被用來構造一個文件名列表

action='store_true' 根據參數是否存在來設置一個位置 Boolean 標志:

action='store' 參數接受一個單獨值並將其存儲為一個字元串

如果一個都沒有,會提示缺少參數 -p/--pat

choices={'slow', 'fast'}, 參數說明接受一個值,但是會將其和可能的選擇值做比較,以檢測其合法性:

一旦參數選項被指定,你就可以執行 parser.parse() 方法了。它會處理 sys.argv 的值並返回一個結果實例。每個參數值會被設置成該實例中 add_argument() 方法的 dest 參數指定的屬性值。

還很多種其他方法解析命令行選項。可以會手動地處理 sys.argv 或者使用 getopt 模塊 。但是,如果你採用本節的方式,將會減少很多冗餘代碼,底層細節 argparse 模塊 已經幫你處理好了。你可能還會碰到使用 optparse 庫解析選項的代碼。盡管 optparse 和 argparse 很像 ,但是後者更先進,因此在新的程序中你應該使用它。

「你寫了個腳本,運行時需要一個密碼。此腳本是互動式的,因此不能將密碼在腳本中硬編碼,而是需要彈出一個密碼輸入提示,讓用戶自己輸入。」

Python 的 getpass 模塊 正是你所需要的。你可以讓你很輕松地彈出密碼輸入提示,並且不會在用戶終端顯示密碼。

代碼中 getpass.getuser() 不會彈出用戶名的輸入提示。它會根據該 用戶的 shell 環境 或者會依據 本地系統的密碼庫 (支持 pwd 模塊的平台)來使用 當前用戶的登錄名

在bash中編寫pytohn腳本接收外部數據的方式,一般情況下,對於一般變數,我們用命令行變數的方式比較多(手動的處理 sys.argv ),對於 文件內容或者bash命令輸出 直接通過腳本內部獲取需要的數據。

其實python 腳本也可以用其他方式來接收 傳遞給他的 文件數據或者bash命令輸出 ,包括將 命令行的輸出 通過 管道傳遞 給該腳本、 重定向文件到該腳本 ,或在 命令行中傳遞一個文件名 或 文件名列表 給該腳本。

這里通過 Python 內置的 fileinput 模塊 ,可以實現重 定向,管道,以文佳輸出 的方式傳遞數據到腳本內部

使用 fileinput.input() 方法可以獲取當前輸入腳本的數據,腳本裡面用一個 FileInput 迭代器接收

文件直接接收

重定向接收

管道方式接收

fileinput.input() 創建並返回一個 FileInput 類的實例,該實例可以被當做一個 上下文管理器 使用。因此,整合起來,如果我們要寫一個列印多個文件輸出的腳本,那麼我們需要在輸出中包含文件名和行號

「你想執行一個外部命令並以 Python 字元串的形式獲取執行結果。」

使用 subprocess.check_output() 函數。

執行下試試

如果被執行的命令以非零碼返回,就會拋出異常。下面的例子捕獲到錯誤並獲取返回碼:

默認情況下, check_output() 僅僅返回輸入到標准輸出的值。如果你需要 同時收集標准輸出和錯誤輸出 ,使用 stderr 參數:

如果你需要用一個超時機制來執行命令,使用 timeout 參數:

通常來講,命令的執行 不需要 使用到 底層 shell 環境(比如 sh、bash) 。一個字元串列表會被傳遞給一個 低級系統命令 ,比如 os.execve() 。

如果你想讓 命令被一個shell 執行 ,傳遞一個字元串參數,並設置參數 shell=True . 有時候你想要 Python 去執行一個復雜的 shell 命令 的時候這個就很有用了,比如管道流、I/O 重定向和其他特性。例如:

是在 shell 中執行命令會存在一定的安全風險,特別是當參數來自於用戶輸入時。這時候可以使用 shlex.quote() 函數 來將參數正確的用雙引用引起來。

使用 check_output() 函數 是執行 外部命令 並獲取其 返回值 的最簡單方式。但是,如果你需要對 子進程做更復雜的交互 ,比如給它發送輸入,你得採用另外一種方法。這時候可直接使用 subprocess.Popen 類。

關於子進程,簡單來看下

也可以進程列表同協程結合的方式。你既可以在子shell中 進行繁重的處理工作,同時也不會讓子shell的I/O受制於終端。

如果直接丟到後台會自動在終端輸出IO

subprocess 模塊對於依賴 TTY 的外部命令不合適用 。例如,你不能使用它來自動化一個用戶輸入密碼的任務(比如一個 ssh 會話)。這時候,你需要使用到第三方模塊了,比如基於著名的 expect 家族的工具(pexpect 或類似的)(pexpect可以理解為Linux下的expect的Python封裝、通過pexpect可以實現對ssh、ftp、passwd、telnet等命令行進行自動交互,而無需人工干涉來達到自動化的目的。比如我們可以模擬一個FTP登錄時所有交互,包括輸入主機地址、用戶名、密碼、上傳文件等,待出現異常還可以進行嘗試自動處理。)

「你想向標准錯誤列印一條消息並返回某個非零狀態碼來終止程序運行」

通過 python 的 raise SystemExit(3) 命令可以主動拋出一個錯誤,通過 sys.stderr.write 將命令寫到標準的輸出端

直接將消息作為參數傳給 SystemExit() ,那麼你可以省略其他步驟

拋出一個 SystemExit 異常,使用錯誤消息作為參數,它會將消息在 sys.stderr 中列印,然後程序以狀態碼 1 退出

「你需要知道當前終端的大小以便正確的格式化輸出。」

使用 os.get terminal size() 函數 來做到這一點。

「復制或移動文件和目錄,但是又不想調用 shell 命令。」

shutil 模塊 有很多便捷的函數可以復制文件和目錄。使用起來非常簡單

這里不多講,熟悉Linux的小夥伴應該不陌生。

默認情況下,對於 符號鏈接 這些命令處理的是它指向的東西文件。例如,如果 源文件 是一個 符號鏈接 ,那麼目標文件將會是 符號鏈接 指向的文件。如果你只想 復制符號鏈接本身 ,那麼需要指定 關鍵字 參數 follow_symlinks

tree() 可以讓你在復制過程中選擇性的忽略某些文件或目錄。你可以提供一個忽略函數,接受一個目錄名和文件名列表作為輸入,返回一個忽略的名稱列表。例如:

對於文件元數據信息, 2() 這樣的函數只能盡自己最大能力來保留它。 訪問時間、創建時間和許可權 這些基本信息會被保留,但是 對於所有者、ACLs、資源 fork 和其他更深層次的文件元信息就說不準了

通常不會去使用 shutil.tree() 函數 來執行 系統備份 。當處理文件名的時候,最好使用 os.path 中的函數來確保最大的可移植性

使用 tree() 復制文件夾的一個棘手的問題是對於錯誤的處理,可以使用異常塊處理,或者通過 參數 ignore dangling symlinks=True 忽略掉無效符號鏈接。

「創建或解壓常見格式的歸檔文件(比如.tar, .tgz 或.zip)」

shutil 模塊擁有兩個函數—— make archive() 和 unpack archive() 可派上用場,

make archive() 的第二個參數是期望的輸出格式。可以使用 get archive formats() 獲取所有支持的歸檔格式列表。

「你需要寫一個涉及到文件查找操作的腳本,比如對日誌歸檔文件的重命名工具,你不想在 Python 腳本中調用 shell,或者你要實現一些 shell 不能做的功能。」

查找文件,可使用 os.walk() 函數 ,傳一個頂級目錄名給它

os.walk() 方法 為我們 遍歷目錄樹 ,每次進入一個目錄,它會返回一個 三元組 ,包含 相對於查找目錄的相對路徑,一個該目錄下的目錄名列表,以及那個目錄下面的文件名列表。

對於每個元組,只需檢測一下目標文件名是否在文件列表中。如果是就使用 os.path.join() 合並路徑。為了避免奇怪的路徑名比如 ././foo//bar ,使用了另外兩個函數來修正結果

os.walk(start) 還有跨平台的優勢。並且,還能很輕松的加入其他的功能。我們再演示一個例子,下面的函數列印所有最近被修改過的文件:

列印10分鍾之前被修改的數據

「怎樣讀取普通.ini 格式的配置文件?」

configparser 模塊 能被用來讀取配置文件

編寫配置文件

如果有需要,你還能修改配置並使用 cfg.write() 方法將其寫回到文件中

「你希望在腳本和程序中將診斷信息寫入日誌文件。」

python 腳本列印日誌最簡單方式是使用 logging 模塊

五個日誌調用( critical(), error(), warning(), info(), debug() )以降序方式表示不同的嚴重級別。 basicConfig() 的 level 參數是一個 過濾器 。所有級別低於此級別的日誌消息都會被忽略掉。每個 logging 操作的參數是一個消息字元串,後面再跟一個或多個參數。構造最終的日誌消息的時候我們使用了 % 操作符來格式化消息字元串。

如果你想使用配置文件,可以像下面這樣修改 basicConfig() 調用:

logconfig.ini

在調用日誌操作前先執行下 basicConfig() 函數方法 ,可以找標准輸出或者文件中輸出

basicConfig() 在程序中只能被執行一次。如果你稍後想改變日誌配置,就需要先獲取 root logger ,然後直接修改它。

更多見日誌模塊文檔https://docs.python.org/3/howto/logging-cookbook.html

「你想給某個函數庫增加日誌功能,但是又不能影響到那些不使用日誌功能的程序。」

對於想要執行日誌操作的函數庫,你應該創建一個專屬的 logger 對象,並且像下面這樣初始化配置:

使用這個配置,默認情況下不會列印日誌,只有配置過日誌系統,那麼日誌消息列印就開始生效

通常來講,不應該在函數庫代碼中 自己配置日誌系統 ,或者是已經有個已經存在的日誌配置了。調用 getLogger( name ) 創建一個和調用模塊同名的 logger 模塊 。由於 模塊 都是唯一的,因此創建的 logger 也將是唯一 的。所以當前進程中只有一個logging會生效。

log.addHandler(logging.NullHandler()) 操作將一個 空處理器 綁定到剛剛已經創建好的 logger 對象 上。一個空處理器默認會忽略調用所有的日誌消息。因此,如果使用該函數庫的時候還沒有配置日誌,那麼將不會有消息或警告出現。

在這里,根日誌被配置成僅僅 輸出 ERROR 或更高級別的消息 。不過, somelib 的日誌級別被單獨配置成可以輸出 debug 級別的消息, 它的優先順序比全局配置高。像這樣更改單獨模塊的日誌配置對於調試來講是很方便的,因為你無需去更改任何的全局日誌配置——只需要修改你想要更多輸出的模塊的日誌等級。(這個還有待研究)

「你想記錄程序執行多個任務所花費的時間」

time 模塊 包含很多函數來執行跟時間有關的函數。盡管如此,通常我們會在此基礎之上構造一個更高級的介面來模擬一個計時器。

這個類定義了一個可以被用戶根據需要啟動、停止和重置的計時器。它會在elapsed 屬性中記錄整個消耗時間。下面是一個例子來演示怎樣使用它:

這里通過 __enter__,__exit__ ,使用 with 語句 以及上下文管理器協議可以省略計時器打開和關閉操作。(關於上下文管理協議,即with語句,為了讓一個對象兼容with語句,必須在這個對象的類中聲明 __enter__和__exit__方法, , __enter__ 在出現with語句被調用, __exit__ 在代碼執行完畢被調用,可以參考open()方法)

在計時中要考慮一個 底層的時間函數問題 。 一般來說, 使用 time.time() 或 time.clock() 計算的時間精度因操作系統的不同會有所不同。而使用 time.perf_counter() 函數可以確保使用系統上面 最精確的計時器 。

「你想對在 Unix 系統上面運行的程序設置內存或 CPU 的使用限制。」

resource 模塊 能同時執行這兩個任務。例如,要限制 CPU 時間,下面的代碼在windows平台執行不了,但是Linux是可以的。

程序運行時, SIGXCPU 信號 在時間過期時被生成,然後執行清理並退出。

這暫時沒有好的Demo...

程序運行到沒有多餘內存時會拋出 MemoryError 異常。

setrlimit() 函數 被用來設置特定資源上面的 軟限制和硬限制 。

setrlimit() 函數 還能被用來設置 子進程數量、打開文件數以及類似系統資源的限制(cgroup) 。

「通過腳本啟動瀏覽器並打開指定的 URL 網頁」

webbrowser 模塊 能被用來啟動一個瀏覽器,並且與平台無關

新窗口打卡網站

當前窗口打開一個tab頁

指定瀏覽器類型,可以使用 webbrowser.get() 函數

5. python 腳本怎麼執行linux命令

有兩種方式:
1、直接使用python
xxxx.py執行。其中python可以寫成python的絕對路徑。使用which
python進行查詢。
2、在文件的頭部(第一行)寫上#!/usr/bin/python2.7,這個地方使用python的絕對路徑,就是上面用which
python查詢來的結果。然後在外面就可以使用./xxx.py執行了。
因為在linux中,python啊shell這些程序都是普通的文本格式,都需要一種程序去解釋執行它。要麼調用的時候指定,要麼在文件頭指定。

6. 學習Python應該掌握哪些知識點

階段一:Python開發基礎

Python全棧開發與人工智慧之Python開發基礎知識學習內容包括:Python基礎語法、數據類型、字元編碼、文件操作、函數、裝飾器、迭代器、內置方法、常用模塊等。

階段二:Python高級編程和資料庫開發

Python全棧開發與人工智慧之Python高級編程和資料庫開發知識學習內容包括:面向對象開發、Socket網路編程、線程、進程、隊列、IO多路模型、Mysql資料庫開發等。

階段三:前端開發

Python全棧開發與人工智慧之前端開發知識學習內容包括:Html、CSS、JavaScript開發、Jquery&bootstrap開發、前端框架VUE開發等。

階段四:WEB框架開發

Python全棧開發與人工智慧之WEB框架開發學習內容包括:Django框架基礎、Django框架進階、BBS+Blog實戰項目開發、緩存和隊列中間件、Flask框架學習、Tornado框架學習、Restful API等。

階段五:爬蟲開發

Python全棧開發與人工智慧之爬蟲開發學習內容包括:爬蟲開發實戰。

階段六:全棧項目實戰

Python全棧開發與人工智慧之全棧項目實戰學習內容包括:企業應用工具學習、CRM客戶關系管理系統開發、路飛學城在線教育平台開發等。

階段七:演算法&設計模式

階段八:數據分析

Python全棧開發與人工智慧之數據分析學習內容包括:金融量化分析。

階段九:機器學習、圖像識別、NLP自然語言處理

Python全棧開發與人工智慧之人工智慧學習內容包括:機器學習、圖形識別、人工智慧玩具開發等。

階段十:Linux系統&百萬級並發架構解決方案

階段十一:高並發語言GO開發

Python全棧開發與人工智慧之高並發語言GO開發學習內容包括:GO語言基礎、數據類型與文件IO操作、函數和面向對象、並發編程等。

7. 在linux系統下python腳本的運行結果自動生成文件怎麼操作

先將終端所在路徑切換到python腳本文件的目錄下
然後給腳本文件運行許可權,一般755就OK,如果完全是自己的私人電腦,也不做伺服器什麼的,給777的許可權問題也不大(具體許可權含義參考chmod指令的介紹,就不贅述了):
chmod
755
./*.py
然後執行。
如果在腳本內容的開頭已經給出了類似於如下的注釋:
#!/usr/bin/env
python
那就可以直接在終端里運行:
./*.py
如果沒有這個注釋
就在終端中執行:
python
./*.py
如果是有圖形界面的腳本
在前面的chmod之後,直接雙擊(KDE桌面是單擊)文件來執行即可