Python实现阿里云aliyun服务器里的文件上传与下载
Python实现阿里云服务器里的文件上传与下载
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()
---------------------
作者:有关心情
来源:CSDN
原文:https://blog.csdn.net/qq_41359051/article/details/79965814
版权声明:本文为博主原创文章,转载请附上博文链接!
Python实现阿里云aliyun服务器里的文件上传与下载相关推荐
- python程序发布到阿里云云服务器_Python实现阿里云服务器里的文件上传与下载
Python实现阿里云服务器里的文件上传与下载 018.4.15 背景: 老实说,因为现实的各种原因造成电脑换来换去是可能出现的事情,但是电脑能换,电脑里的环境却不能换.我就曾在三个电脑里各自安装了虚 ...
- 阿里云OSS对象存储(文件上传与下载)宝宝级教程
1.注册自己的阿里云账号 2.登录账号以后,进入主页面搜索"对象存储OSS 然后可以看到如下界面 立即购买,自己学习使用可以选择购买最小的存储空间,半年即可 管理控制台,购买了存储空间以后可 ...
- linux的常用操作——基于ftp的windows10和腾讯云centos操作系统之间的文件上传和下载
\qquad在腾讯云服务器的centos操作系统上,安装vsftpd并进行配置,然后基于ftp实现windows10操作系统和腾讯云centos系统之间的文件上传和下载. 文章目录 1.基于腾讯云服务 ...
- 阿里云OSS后台实现远程文件上传下载
1.登陆阿里云,开通OSS,找到官方文档 按照下列所有步骤点进去就可以找到官方文档 这里上传下载都在这里 现在实现方式,当然我是学的java 必传的四个参数 #文件上传配置 file:alicloud ...
- 【实战-干货】手把手带你搭建自己的FTP服务器,实现文件上传、下载
- Python 技术篇-用flask服务实现mac本地文件上传至windows服务器指定文件夹下实例演示
操作 linux 主机的话用 paramiko 会简单很多,可以看我下面的文章. Python 技术篇-用 paramiko 库实现 winodws 本地文件上传至 linux 服务器实例演示 首先是 ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...
- springboot整合阿里云视频点播服务Vod——实现视频上传、删除、播放
视频点播(ApsaraVideo VoD,简称VoD)是集视频采集.编辑.上传.媒体资源管理.自动化转码处理(窄带高清™).视频审核分析.分发加速于一体的一站式音视频点播解决方案. 阿里云视频点播服务 ...
- SpringBoot整合阿里云OSS,支持文件上传、下载、删除、加签等操作
首先附上OSS基本介绍和官方文档链接:https://help.aliyun.com/product/31815.html?spm=ata.21736010.0.0.25d67536bR4cly 另外 ...
最新文章
- vb如何测试连接mysql_怎么在vb程序中查找数据库信息并显示
- malloc动态分配多维数组
- 波形包络提取与峰值提取_研究提出从地震噪声提取微弱体波信号探测下地幔散射体的方法...
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1099:第n小的质数
- return和break的区别
- 解决win7下无法安装突击者NO.69驱动,“WINDOWS已找到设备的驱动程序,但在试图安装它时错误”...
- postman使用_postman如何使用集合断言?
- PWN-PRACTICE-BUUCTF-13
- OpenGL:显示一些立体图形示例程序(真不错)
- Java 字符编码与解码
- java全局变量加锁_Java锁Synchronized,对象锁和类锁举例
- tcp服务器测试网页版,tcp测试服务器
- 正定矩阵与半正定矩阵
- IDEA生成SerialVersionUID
- 医学知识-骨密度以及骨密度测量
- 软文写作是什么?如何写软文?软文标题怎样拟定?
- 为程序员讨回失去的午觉,我被投诉了,差点吃官司
- windows中docker 安装和使用
- 神兽大厅源码搭建SLB最佳实践
- 1484: 青蛙(四)
热门文章
- php7 java8_php7 vs java8 vs nodejs5 vs lua5.2 计算性能比较
- 树莓派默认密码_用树莓派搭建私人简易网盘 2/5 树莓派4B初始设置
- simulink和psim仿真结果不同_案例展示金属增材制造过程仿真分析 (下篇)- 微观尺度...
- python画熊猫代码_用Python Turtle 画可爱的熊猫
- 请你描述一下 cookies,sessionStorage 和 localStorage 的区别?
- 想改善风险管理工作吗?做些基础性工作吧
- 第一个PhoneGap程序以及错误解决
- 博客摘录:网络管理员的两天
- CRF和HMM区别不仅仅前者是判别模型后者是生成模型
- 运行NER/formal_bert_lstm_crf.py“ 报错ModuleNotFoundError: No module named ‘keras_contrib‘