Python?代替?xftp?從?Linux?服務(wù)器下載文件的操作方法
我們經(jīng)常需要從Linux服務(wù)器上同步文件,但是xftp等工具都需要注冊了,這里用免費(fèi)的Python代碼來下載文件,還可以擴(kuò)展更多的自定義用法。
準(zhǔn)備工作
本文需要使用paramiko庫,可以使用以下命令進(jìn)行安裝:
pip install paramiko
下載文件
先創(chuàng)建一個(gè)SSHClient對象,并設(shè)置缺失主機(jī)密鑰的策略為自動(dòng)添加,然后使用connect方法連接到服務(wù)器。需要提供服務(wù)器IP地址、端口號、用戶名和密碼。連接成功后,打開SFTP通道,使用open_sftp方法創(chuàng)建SFTP對象。SFTP是SSH協(xié)議的一部分,用于在服務(wù)器和本地之間傳輸文件。使用SFTP對象的open方法打開要下載的遠(yuǎn)程文件,并指定打開模式為只讀。假設(shè)要下載的文件是UTF-8編碼的文本文件,進(jìn)行編碼轉(zhuǎn)換。下面是一個(gè)使用paramiko庫從Linux服務(wù)器上下載文件的示例代碼:
import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname='your_server_ip', port=22, username='your_username', password='your_password') sftp = ssh.open_sftp() remote_file = sftp.open('/path/to/remote/file', 'r') remote_file.read().decode('utf-8').encode('gbk')
在上面的代碼中,將your_server_ip替換為您的Linux服務(wù)器的IP地址,your_username替換為用戶名,your_password替換為密碼,/path/to/remote/file替換為要下載的遠(yuǎn)程文件的路徑,/path/to/local/file替換為要保存的本地文件的路徑。
保存文件
在本地創(chuàng)建一個(gè)文件對象,使用open方法打開,指定寫入模式,并將遠(yuǎn)程文件的內(nèi)容寫入本地文件。最后,關(guān)閉所有的文件對象、SFTP對象和SSH連接。
local_file.write(remote_file.read().decode('utf-8')) remote_file.close() local_file.close() sftp.close() ssh.close()
文件是否存在
為了保證每次下載都是最新,如果存在就刪除后創(chuàng)建新文件,如果不存在就創(chuàng)建新文件。
# 檢查文件是否存在,如果不存在則創(chuàng)建 if not os.path.exists('/path/to/local/file'): with open('/path/to/local/file', 'w') as f: pass # 創(chuàng)建空文件 # 打開本地文件,指定追加模式 local_file = open('/path/to/local/file', 'a')
使用os.path.exists函數(shù)檢查文件是否存在,如果不存在則創(chuàng)建空文件。在打開本地文件時(shí),指定模式為追加模式('a'),這樣可以在已有內(nèi)容的基礎(chǔ)上追加新內(nèi)容。
由于windows中文件是進(jìn)程獨(dú)占,可能未釋放,會報(bào)錯(cuò):
os.remove(local_path) PermissionError: [WinError 32] 另一個(gè)程序正在使用此文件,進(jìn)程無法訪問。
可以使用文件對象的truncate()方法。該方法將文件截?cái)酁橹付ǖ拇笮?,若文件大小為零,所有?nèi)容都將被刪除。
with open('file.txt', 'w') as file: file.truncate(0)
使用with語句打開文件file.txt,并將文件對象分配給變量file,調(diào)用truncate(0)方法以將文件截?cái)酁榱悖瑒h除文件中的所有內(nèi)容。此方法僅適用于文本文件。如果要清除二進(jìn)制文件的內(nèi)容,可以使用類似的方法,但是需要將文件對象打開為二進(jìn)制模式(例如'wb')。
到此這篇關(guān)于Python 代替 xftp 從 Linux 服務(wù)器下載文件的文章就介紹到這了,更多相關(guān)Python Linux 服務(wù)器下載文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 如何把python項(xiàng)目部署到linux服務(wù)器
- Pycharm使用遠(yuǎn)程linux服務(wù)器conda/python環(huán)境在本地運(yùn)行的方法(圖解))
- Linux服務(wù)器上安裝Python3的兩種方式
- python 讀取Linux服務(wù)器上的文件方法
- python和shell監(jiān)控linux服務(wù)器的詳細(xì)代碼
- 詳解Python下ftp上傳文件linux服務(wù)器
- Linux下安裝Python3和django并配置mysql作為django默認(rèn)服務(wù)器方法
- Linux服務(wù)器網(wǎng)卡流量查看方法 shell和Python各一枚
- Linux下將Python的Django項(xiàng)目部署到Apache服務(wù)器
- python下paramiko模塊實(shí)現(xiàn)ssh連接登錄Linux服務(wù)器
相關(guān)文章
Starship定制shell提示符實(shí)現(xiàn)信息自由
這篇文章主要介紹了Starship定制shell提示符的實(shí)現(xiàn),讓你需要的所有信息觸手可及,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03python+opencv實(shí)現(xiàn)的簡單人臉識別代碼示例
這篇文章主要介紹了圖像識別 python+opencv的簡單人臉識別,具有一定參考價(jià)值,需要的朋友可以參考下。2017-11-11Python內(nèi)置模塊hashlib、hmac與uuid用法分析
這篇文章主要介紹了Python內(nèi)置模塊hashlib、hmac與uuid用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了hashlib、hmac與uuid模塊的概念、功能及簡單使用方法,需要的朋友可以參考下2018-02-02基于python實(shí)現(xiàn)可視化生成二維碼工具
這篇文章主要介紹了基于python實(shí)現(xiàn)可視化生成二維碼工具,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07基于Python編寫一個(gè)有趣的年會抽獎(jiǎng)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫一個(gè)簡易的抽獎(jiǎng)系統(tǒng),順便幫助大家鞏固一下對Python語法和框架的理解,感興趣的小伙伴可以了解下2023-12-12Python?"手繪風(fēng)格"數(shù)據(jù)可視化方法實(shí)例匯總
這篇文章主要給大家介紹了關(guān)于Python?"手繪風(fēng)格"數(shù)據(jù)可視化方法實(shí)現(xiàn)的相關(guān)資料,本文分別給大家?guī)砹薖ython-matplotlib手繪風(fēng)格圖表繪制、Python-cutecharts手繪風(fēng)格圖表繪制以及Python-py-roughviz手繪風(fēng)格圖表繪制,需要的朋友可以參考下2022-02-02