欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python自写软件(一)

程序员文章站 2022-09-03 21:22:36
寒假因为疫情闲的无聊,自学了Python,随便跟了几节课就入手了 群里大佬都在学c++,我java那本书已经看完了,我的笔记本 (Web 视图)不知道能不能打开。 python的库多,语法简单,然后又学了一些自带库和第三方库,之后可能要学matplotlib或者numpy,pyqt5还在学,但是想要 ......

寒假因为疫情闲的无聊,自学了python,随便跟了几节课就入手了

群里大佬都在学c++,我java那本书已经看完了,  (web 视图)不知道能不能打开。

python的库多,语法简单,然后又学了一些自带库和第三方库,之后可能要学matplotlib或者numpy,pyqt5还在学,但是想要实现的*有很多

先把地址附上

这实现了命令行的文件传输,用了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协程也不知道怎么做,知道的大佬告诉我怎么边等待传输边显示动画python自写软件(一)

 

 

 

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 设置应用图标

python自写软件(一)

 

python自写软件(一)

 

 

 

 

python自写软件(一)