導航:首頁 > 編程語言 > python列表倒置

python列表倒置

發布時間:2025-04-05 04:41:37

❶ 純干貨!python 在運維中的應用 (一):批量 ssh/sftp

日常工作中需要大量、頻繁地使用ssh到伺服器查看、拉取相關的信息或者對伺服器進行變更。目前公司大量使用的shell,但是隨著邏輯的復雜化、腳本管理的精細化,shell已經不滿足日常需求,於是我嘗試整合工作中的需求,製作適合的工具。 由於管理制度的缺陷,我以工作流程為核心思考適合自己的運維方式,提升工作效率,把時間留給更有價值的事情。 完整代碼在最後,請大家參考。

生產:4000+物理伺服器,近 3000 台虛擬機。

開發環境:python3.6、redhat7.9,除了paramiko為第三方模塊需要自己安裝,其他的直接import即可。

批量執行操作是一把雙刃劍。批量執行操作可以提升工作效率,但是隨之而來的風險不可忽略。

風險案例如下:

掛載很多數據盤,通常先格式化硬碟,再掛載數據盤,最後再寫入將開機掛載信息寫入/etc/fstab文件。在批量lsblk檢查硬碟信息的時候發現有的系統盤在/sda有的在/sdm,如果不事先檢查機器相關配置是否一致直接按照工作經驗去執行批量操作,會很容易造成個人難以承受的災難。

在執行批量操作時按照慣例:格式化硬碟->掛載->開機掛載的順序去執行,假設有的機器因為某些故障導致格式化硬碟沒法正確執行。在處理這類問題的時候通常會先提取出失敗的ip,並再按照慣例執行操作。運維人員會很容易忽略開機掛載的信息已經寫過了,導致復寫(這都是血和淚的教訓)。

所以,為了避免故障,提升工作效率,我認為應當建立團隊在工作上的共識,應當遵守以下原則:

當然,代碼的規范也應當重視起來,不僅是為了便於審計,同時也需要便於溯源。我認為應當注意以下幾點:

1、ssh no existing session,sftp超時時間設置:

在代碼無錯的情況下大量ip出現No existing session,排查後定位在代碼的寫法上,下面是一個正確的示例。由於最開始沒考慮到ssh連接的幾種情況導致了重寫好幾遍。另外sftp的實例貌似不能直接設置連接超時時間,所以我採用了先建立ssh連接再打開sftp的方法。

2、sftp中的get()和put()方法僅能傳文件,不支持直接傳目錄:

不能直接傳目錄,那換個思路,遍歷路徑中的目錄和文件,先創建目錄再傳文件就能達到一樣的效果了。在paramiko的sftp中sftp.listdir_attr()方法可以獲取遠程路徑中的文件、目錄信息。那麼我們可以寫一個遞歸來遍歷遠程路徑中的所有文件和目錄(傳入一個列表是為了接收遞歸返回的值)。

python自帶的os模塊中的os.walk()方法可以遍歷到本地路徑中的目錄和文件。

3、多線程多個ip使用sftp.get()方法時無法並發。

改成多進程即可。

4、多個ip需要執行相同命令或不同的命令。

由於是日常使用的場景不會很復雜,所以借鑒了ansible的playbook,讀取提前准備好的配置文件即可,然後再整合到之前定義的ssh函數中。


同時,我們還衍生出一個需求,既然都要讀取配置,那同樣也可以提前把ip地址准備在文件里。正好也能讀取我們返回的執行程序的結果。

參數說明:

密碼認證:

公鑰認證:

可以配合 grep,awk 等命令精準過濾。

個人認為 Python 在初中級運維工作中的性質更像是工具,以提升工作效率、減少管理成本為主。可以從當前繁瑣的工作中解脫出來,去 探索 更有價值的事情。python 本質上並不會減少故障的產生,所以在不同的階段合理利用自身掌握的知識解決當前最重要的痛點,千萬不要本末倒置。

❷ 關於python 畫圖的問題,我有一串碼完全看不懂,麻煩大家幫我看一下。

首先,確定三角形的位置需要三個點。代碼里給出的myPoints = [[-100,-50],[0,100],[100,-50]]就是這三個點的位置,你可以在坐標軸里畫一個x,y軸,找一下就知道了。如果只是想讓三角形倒過來,就重新給它三個點[[-100,100],[100,100],[0,-50]]。

其次,三角形的邊長,就是兩個點之間的直線距離。從代碼里可以看到,(-100,-50),(100,-50)這兩個點是在同一條橫向的線上,它們的距離是200.所以想把三角形的尺寸擴大兩倍,就需要把邊長擴大,給出新的點[[-200,200],[200,200],[0,-100]]

綜上,修改main函數中的myPoints,即可達到你的需求:倒置三角形,尺寸擴大兩倍
def main():
myTurtle = turtle.Turtle()
myWin = turtle.Screen()
myPoints = [[-200,200],[200,200],[0,-100]]
sierpinski(myPoints,3,myTurtle)
myWin.exitonclick()

再解釋幾個問題:
myTurtle.up() 和myTurtle.down()

可以把myTurtle看做是畫筆,myTurtle.up()就表示把畫筆從畫布上抬起,也就是不跟畫布接觸。myTurtle.down()也就可以看成是畫筆跟畫布接觸。

sierpinski是定義的一個遞歸畫三角形的方法,degree可以理解成遞歸的深度,也就是說在一個三角形內可以再畫幾個小三角形(不包括中間的三角形)。代碼里degree 是3,你可以運行一下代碼,看看效果。

希望能幫到你,有疑問請追問!

❸ python如何用for語句編寫倒置的直角三角形程序,要求*號順序是7.5.3.1

利用Python的for循環,我們可以輕松地創建一個倒置的直角三角形,其中*號的順序為7、5、3、1。首先,我們需要設定一個范圍,從7開始,每次遞減2,直到0。通過使用print函數和乘法運算符,我們可以實現所需的效果。具體代碼如下:

for x in range(7, 0, -2):

print('*' * x)

這段代碼將依次列印出以下內容:

*********

*****

***

*

代碼中的range(7, 0, -2)表示從7開始,每次遞減2,直到0(不包括0)。在for循環內部,print('*' * x)會將x個星號列印出來。通過調整range的參數,可以改變星號的數量和排列方式,從而實現不同的圖形效果。

例如,如果我們將range的范圍改為range(10, 0, -2),則會得到一個更大的倒置直角三角形,星號的順序變為10、8、6、4、2:

**********

********

******

****

**

當然,我們也可以根據需要調整range的起始值、結束值和步長,以創造出更多有趣的圖形。這不僅有助於理解for循環的工作原理,還可以提高編程技能,培養創造力。

通過實踐和探索,我們可以發現Python語言的強大之處。使用簡單的for循環和字元串操作,就能輕松地實現復雜的圖形繪制。這對於初學者來說是一個很好的起點,同時也為進階學習打下了堅實的基礎。

❹ 利用python輸出倒置排列的九九乘法表

通過使用Python,我們可以生成一個倒置排列的九九乘法表,具體代碼如下:

for ii in range(9, 0, -1):

for jj in range(9, 0, -1):

if jj <= ii:

print('{0}*{1}={2}'.format(ii, jj, str((ii * jj)).rjust(2, ' ')), '', end='')

print('')

運行這段代碼,我們得到的結果是:

9*9=819*8=729*7=639*6=549*5=459*4=369*3=279*2=189*1=9 8*8=648*7=568*6=488*5=408*4=328*3=248*2=168*1=8 7*7=497*6=427*5=357*4=287*3=217*2=147*1=7 6*6=366*5=306*4=246*3=186*2=126*1=6 5*5=255*4=205*3=155*2=105*1=5 4*4=164*3=124*2=84*1=4 3*3=93*2=63*1=3 2*2=42*1=2 1*1=1

這樣,我們就可以得到一個從9乘9到1乘1的倒序排列的乘法表,每個乘法表達式右側補足兩位數,使得每行的格式統一。

通過這樣的方式,我們可以利用Python輕松生成各種形式的乘法表,不僅限於倒置排列,還可以生成正序排列或其他特殊排列的乘法表。

此外,這種方式也可以根據需要調整乘法表的大小,只需修改range函數中的參數即可。

總之,利用Python生成乘法表是一種非常靈活且高效的方法,可以滿足各種不同的需求。

閱讀全文

與python列表倒置相關的資料

熱點內容
小伙電腦編程 瀏覽:796
安卓手機打字出錯怎麼辦 瀏覽:778
雲伺服器怎麼掛網頁游戲 瀏覽:801
蘋果手機有什麼練音準的app 瀏覽:638
編譯原理53 瀏覽:535
javacms開源系統源碼下載 瀏覽:609
軟體個人版和伺服器版有什麼區別 瀏覽:668
lol有什麼伺服器在山東 瀏覽:844
命令行關閉窗口 瀏覽:972
手模編程 瀏覽:264
引入賬套顯示需要解壓縮 瀏覽:425
本地電腦連接阿里雲伺服器SQL 瀏覽:48
小米什麼時候推送安卓12 瀏覽:486
如何確保伺服器不斷電不斷網 瀏覽:19
怎麼增加密碼的安全性 瀏覽:212
安卓模擬器如何重啟 瀏覽:902
程序員那麼可愛懷孕第幾集結婚 瀏覽:744
markdownlinux命令 瀏覽:490
低配伺服器什麼價 瀏覽:631
kms伺服器指向錯誤怎麼修改 瀏覽:733