python自寫軟件(一)


寒假因為疫情閑的無聊,自學了Python,隨便跟了幾節課就入手了

群里大佬都在學c++,我java那本書已經看完了,我的筆記本  (Web 視圖)不知道能不能打開。

python的庫多,語法簡單,然后又學了一些自帶庫和第三方庫,之后可能要學matplotlib或者numpy,pyqt5還在學,但是想要實現的輪子有很多

先把地址附上myftp(github地址)

這實現了命令行的文件傳輸,用了paramiko庫 (cmd下載命令:pip install -i https://pypi.douban.com/simple paramiko)

 1 import time
 2 from get import ssh_server_get
 3 from put import ssh_server_put
 4 
 5 ip_or_hostname = input("$ 請輸入目標服務端的ip或主機名:\n$ ")
 6 print("請檢查服務器端口22是否打開(未配置的需要配置ssh服務,詳請百度)")
 7 # TODO 提示
 8 # 用命令行模塊給參數
 9 time.sleep(2)
10 username = input("$ 請輸入用戶名:\n$ ")
11 time.sleep(2)
12 password = input("$ 請輸入登錄密碼:\n$ ")
13 time.sleep(2)
14 action = input("$ 請選擇執行的操作:g/p:\n$ ")
15 while (not (action == "g")) and (not (action == "p")):
16     action = input("$ 輸入錯誤,請重新輸入:g/p\n$ ")
17 time.sleep(2)
18 print("您的操作是:%s  " % action)
19 # 若未輸入則默認地址
20 # 用命令行模塊給參數
21 if action == "g":
22     remote_address = input("$ 輸入需要從目標服務端下載的文件的地址:\n$ ")
23     while remote_address is None:
24         remote_address = input("$ 請重新輸入,不得為空:\n$ ")
25     address = input("$ 輸入獲得的文件存放地址(為空則為當前目錄地址):\n$ ")
26     print("正在執行操作-- %s  " % action)
27     ssh_server_get(ip_or_hostname, username, password, address, remote_address)
28 
29 elif action == "p":
30     address = input("$ 輸入需要上傳的文件地址:\n$ ")
31     while address is None:
32         address = input("$ 請重新輸入,不得為空:\n$ ")
33     remote_address = input("$ 輸入目標服務端存放文件的地址(為空則為默認地址\home\yourhostname):\n$ ")
34     print("正在執行操作-- %s  " % action)
35     ssh_server_put(ip_or_hostname, username, password, address, remote_address)
36 
37 time.sleep(2)
38 print("操作完成")

這里是做初始化工作,因為要做的像這個軟件,端口號已經寫了22,因為是命令行,本來想做成動態動畫用progress庫,用asyncio協程也不知道怎么做,知道的大佬告訴我怎么邊等待傳輸邊顯示動畫

 

 

 

import os
import sys
import paramiko
from os.path import split, join
from os import sep


def ssh_server_put(ip_or_hostname: str, username: str, password: str, address: str,
                   remote_address: str) -> None:
    transport = paramiko.Transport((ip_or_hostname, 22))
    transport.connect(username=username, password=password)
    sftp = paramiko.SFTPClient.from_transport(transport)

    if remote_address is None:
        name = username
        file = split(address)[-1]
        path = join('/home', name, file)
        try:
            sftp.put(address, path)
        except Exception as e:
            print("無法連接遠程服務端,請檢查輸入:")
            sys.exit(-1)

    else:
        try:
            sftp.put(address, join(remote_address, split(address)[-1]))
        except Exception as e:
            print("無法連接遠程服務端,請檢查輸入:")
            sys.exit(-1)
    sftp.close()

先創建transport 然后創建連接sftp

import paramiko
from os.path import split
import sys


def ssh_server_get(ip_or_hostname: str, username: str, password: str, address: str,
                   remote_address: str) -> None:
    transport = paramiko.Transport((ip_or_hostname, 22))
    transport.connect(username=username, password=password)
    sftp = paramiko.SFTPClient.from_transport(transport)
    # sftp.put("1.txt","/home/siuwhat/Desktop/1.txt")
    if address is None:
        try:
            sftp.get(remote_address, split(remote_address)[-1])
        except Exception as e:
            print("無法連接遠程服務端,請檢查輸入:")
            sys.exit(-1)
    else:
        try:
            sftp.get(remote_address, address + split(remote_address)[-1])
        except Exception as e:
            print("無法連接遠程服務端,請檢查輸入:")
            sys.exit(-1)
    sftp.close()

差不多的

然后使用pyinstaller,跟paramiko一個下載鏈接,把庫名換了就好,如果不信就在-i 后加庫名

 

這是pyinstaller命令

-F 打包成一個exe

-w(這里沒用到)不彈出cmd

-i 設置應用圖標

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM