Python实现阿里云服务器里的文件上传与下载

018.4.15

背景:

老实说,因为现实的各种原因造成电脑换来换去是可能出现的事情,但是电脑能换,电脑里的环境却不能换。我就曾在三个电脑里各自安装了虚拟机,这样一来,所有考虑到的情况下都可以好好编程了。本来该自鸣得意的时候,可别忙,环境的安装老是重复出现,scrapy框架安装三次,PIL安装三次,MongoDB三次……直到我想吐了。照理说,程序员最忌讳的就是重复造轮子,其“重复”二字应该是所有参与写代码人的天敌。但我之前居然乐此不彼……以后会越来多的模块需要安装,但我恐怕在这事儿上不会有越来越多的耐心。

当然,有问题不可怕,解决就好。了解到阿里云之后,因为是学生的身份,租借服务器优惠力度很大。因为暂时还不会需要太大的处理环境,所以选择了云服务器ECS,一年的使用期,想是够用的。配置环境,开心的敲代码……

但是世事总不随人意,问题又一次出现。这一次是:我爬虫到的数据没办法拿到本地来。所以继续:有问题不可怕,解决就好。继续正面刚。

网上搜到的方法很多,但都不如我意。至少win上的远程桌面连接于我来说,怎么都行不通。最后择选了利用sftp协议实现的文件

上传下载的功能。因为自己敲出的代码方便自己是一件很有成就感的事。具体实现参考过河卒子Rover的方法点击打开链接,在这里感谢他。

正文:

预备环境:

环境:win7

所需模块:paramiko

安装方式:pip3 install paramiko

建议远程连接工具:Xshell5 (老实说,喜欢)

构想:

由于常在linux环境下写东西,所以希望写出来的东西在使用的时候也很linux。因此希望最后可以是这样的:python3 SFTP.py [ip] [filename] [-d|u|h]

实现:

构想好之后就可以动手实现了。参数很好解决,是python自带模块sys,sys.argv。sys.argv[0]是执行的文件名,sys.argv[1]……,后面依次。为了提高代码的健壮性,所以写了help()函数做提示

由于初次使用,可能会对所需要的参数还不了解,所以在设计之处决定,在单独使用文件时,会直接启动help()函数

整个代码中最为关键的部分:

conn.connect(username = self.name, password = passwd)

self.sftp_ob = paramiko.SFTPClient.from_transport(conn)

self.sftp_ob.put()

self.sftp_ob.get()

注意:

在put()和get()函数中,对于远程链接的linux的文件路径,一定要绝对的准确,如果文件在家目录中,不能用~,而是/home/... 不然会提示找不到路径。

指定win7下的路径时,需要linux化,比如在win上是D:\aliyun\download\,应该写成D:/aliyun/download/

结尾

由于写出的代码是自己再用,所以考虑的状况并不算多,健壮性依然堪忧。不过根据自己的实际需求对代码修改。

最后贴出完整的代码。因能力有限,纰漏处望各友指正。

#!/usr/bin/env python

# coding=utf-8

import paramiko

import sys

class SFTP():

"""

实现ssh远程登陆,并且上传下载文件

"""

def __init__(self, ip=None, filename=None, choose="-h"):

self.ip = ip

# 如果常用一个ip,可以设置默认ip

if not self.ip:

self.ip = "阿里云服务器ip"

self.filename = filename

self.choose = choose

self.justice()

def justice(self):

# 判断用户需要的功能

"""

根据参数,判断执行函数

"""

if self.choose == "-d":

self.do_it = self.download

elif self.choose == "-u":

self.do_it = self.upload

elif self.choose == "-h":

self.do_it = self.help

else:

self.do_it = self.help

def start(self):

# 执行

self.do_it()

def help(self):

# 帮助文档

print("\n", end="")

print("参数:")

print("-d[download] 下载文件")

print("-u[upload] 上传文件")

print("-h[help] 帮 助")

print("\n", end="")

print("格式:")

print("python3 STFP.py [ip] [filename] [-u|-d|-h]")

def connect(self):

# 连接

try:

conn = paramiko.Transport((self.ip, 22))

except Exception as e:

print(e)

else:

# 用户名,用户密码

self.name = input("用户名:")

passwd = input("登陆密码:")

try:

# 尝试与远程服务器连接

conn.connect(username = self.name, password = passwd)

self.sftp_ob = paramiko.SFTPClient.from_transport(conn)

except Exception as e:

# 失败则打印原因

print(e)

return

else:

print("连接成功!")

def download(self):

self.connect()

# print("正在下载..")

self.sftp_ob.get("/home/"+self.name.lower()+"/download/"+self.filename, "D:/aliyun/download/"+self.filename)

print("完成!")

def upload(self):

self.connect()

# print("正在上传...")

self.sftp_ob.put("D:/aliyun/upload/"+self.filename, "/home/"+self.name.lower()+"/upload/"+self.filename)

print("完成!")

def main():

try:

sftp = SFTP(sys.argv[1], sys.argv[2], sys.argv[3])

except:

if "-h" in sys.argv:

sftp = SFTP(choose=sys.argv[1])

else:

sftp = SFTP()

sftp.start()

if __name__ == "__main__":

main()

python程序发布到阿里云云服务器_Python实现阿里云服务器里的文件上传与下载相关推荐

  1. Python实现阿里云aliyun服务器里的文件上传与下载

    Python实现阿里云服务器里的文件上传与下载 Python实现阿里云服务器里的文件上传与下载 背景: 正文: 预备环境: 构想: 实现: 注意: 结尾 018.4.15 背景: 老实说,因为现实的各 ...

  2. SpringBoot整合阿里云OSS,支持文件上传、下载、删除、加签等操作

    首先附上OSS基本介绍和官方文档链接:https://help.aliyun.com/product/31815.html?spm=ata.21736010.0.0.25d67536bR4cly 另外 ...

  3. python批量上传 服务器_python写的批量操作远程主机脚本(命令执行,上传、下载文件)...

    最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正 准备工作: 安装python 2.6.5: yum -y install readl ...

  4. 高薪程序员面试题精讲系列23之说一下如何实现文件上传、下载以及断点续传?

    一. 面试题及剖析 1. 今日面试题 在上一篇文章中,壹哥 给大家总结了I/O流相关的内容,复习了各种I/O流相关API.其实我们去面试的时候,面试官提问的前后两个题目之间往往会具有一定的关联性.比如 ...

  5. python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

    很多selenium学习者被浏览器弹出的文件上传.下载框折磨的痛不欲生,今天博主就带你们轻松搞定上传和下载问题. 上传 上传弹框 文件上传是所有UI自动化测试都要面对的一个头疼问题,要处理这个问题,我 ...

  6. 科普|不同协议下远程服务器文件上传_下载优劣对比

    作为一个程序员,如果不知道如何进行远程服务器的文件上传与下载,实在是一件尴尬的事情.打开百度,搜索「远程服务器 上传下载」,你能得到 63,100,000 个搜搜结果,五花八门的操作方式的让人眼花缭乱 ...

  7. python实现文件上传和下载_[Python] socket实现TFTP上传和下载

    一.说明 本文主要基于socket实现TFTP文件上传与下载. 测试环境:Win10/Python3.5/tftpd64. tftpd下载:根据自己的环境选择下载,地址 :http://tftpd32 ...

  8. itms-services php,APP发布系统 ipa文件上传和下载 itms-service协议

    项目需求:内部测试分发APP,发布系统 ipa文件上传和下载,使用itms-service协议和safari网页内跳转下载 分为下载页面(dl.html).text.plist文件.test.ipa文 ...

  9. FTP服务器的搭建与使用FTP软件进行文件上传

    使用工具:VMware pro,windows server 2008 r2系统镜像文件 1.新建虚拟机,两个模式都可以创建 1.新建一个空白系统. 1.选择操作系统 2.选择操作系统版本 1.配置w ...

最新文章

  1. 删除 shiro url 上的JSESSIONID
  2. 为什么租号玩显示服务器忙,租号玩上号器怎么用,租号玩上号器使用教程
  3. python打印乘法表口诀-用Python打印九九乘法表正三角和倒三角。
  4. Qt paintevent事件
  5. python apscheduler执行_python apscheduler 每两小时执行一次
  6. 二维码识别中面临的主要问题
  7. ZZULIOJ 1052:数列求和4
  8. Gym 101147J Whistle's New Car(dfs)
  9. 程序员的进阶课-架构师之路(2)-数组
  10. Oracle TNS-12535: TNS: 操作超时
  11. pytorch torch.triu
  12. iOS学习——Socket
  13. java 反射机制 在structs2_Java面试题之Struts2
  14. 【C++入门】C++多态
  15. 跨模态行人重识别:RGB-Infrared Cross-Modality Person Re-Identification 学习记录笔记
  16. 分享一个动态sql编写工具
  17. 多模块,Maven无法下载依赖,仓库查看有这个版本但是无法下载,点reload也没用
  18. pytorch测试报错:RuntimeError: cuda runtime error (10) : invalid device ordinal at torch/csrc/cuda/Module
  19. La Nina 年和El Nino 年 区分
  20. 实验21_STP分析合集_ENSP

热门文章

  1. 【SA8295P 源码分析】18 - Camera Bringup 流程 及 源码分析
  2. Python+Selenium练习篇之3-利用tag name定位元素
  3. SAP Fiori应用索引大全工具和 SAP Fiori Tools 的使用介绍
  4. 《 ChatGPT 中文调教指南 》—— 使用 ChatGPT 的正确姿势:提示工程基础入门 Prompt Engineering Quick Start
  5. 计算机基础 - 二进制
  6. 那些因素会影响微型真空泵间接抽水的效果?
  7. 学业水平测试计算机知识点,初中信息技术学业水平考试知识点(操作题)
  8. html中search叉号颜色,search.html
  9. unity场景导入与简单场景搭建
  10. 顾小清:教育信息化进入数字化转型重要时期