zoukankan      html  css  js  c++  java
  • 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或主机名:
    $ ")
     6 print("请检查服务器端口22是否打开(未配置的需要配置ssh服务,详请百度)")
     7 # TODO 提示
     8 # 用命令行模块给参数
     9 time.sleep(2)
    10 username = input("$ 请输入用户名:
    $ ")
    11 time.sleep(2)
    12 password = input("$ 请输入登录密码:
    $ ")
    13 time.sleep(2)
    14 action = input("$ 请选择执行的操作:g/p:
    $ ")
    15 while (not (action == "g")) and (not (action == "p")):
    16     action = input("$ 输入错误,请重新输入:g/p
    $ ")
    17 time.sleep(2)
    18 print("您的操作是:%s  " % action)
    19 # 若未输入则默认地址
    20 # 用命令行模块给参数
    21 if action == "g":
    22     remote_address = input("$ 输入需要从目标服务端下载的文件的地址:
    $ ")
    23     while remote_address is None:
    24         remote_address = input("$ 请重新输入,不得为空:
    $ ")
    25     address = input("$ 输入获得的文件存放地址(为空则为当前目录地址):
    $ ")
    26     print("正在执行操作-- %s  " % action)
    27     ssh_server_get(ip_or_hostname, username, password, address, remote_address)
    28 
    29 elif action == "p":
    30     address = input("$ 输入需要上传的文件地址:
    $ ")
    31     while address is None:
    32         address = input("$ 请重新输入,不得为空:
    $ ")
    33     remote_address = input("$ 输入目标服务端存放文件的地址(为空则为默认地址homeyourhostname):
    $ ")
    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 设置应用图标

  • 相关阅读:
    Mysql: 一个死锁场景的解决
    Mysql: 创建新的账号
    安全评测:BashDoor
    BeanFactory和FactoryBean的区别:
    linux 下将war解压到当前目录
    学习BoolanC++笔记_01(C++面向对象高级编程(上)第一周)
    学习BoolanC++笔记_00(预备)
    Linux (Centos) 上安装Nexus OSS 3 并搭建docker私有仓库
    linux(Centos7)搭建rpm仓库
    树莓派4b安装 manjaro linux
  • 原文地址:https://www.cnblogs.com/otakus/p/pysoft1.html
Copyright © 2011-2022 走看看