自动上传到树莓派

这是一个用python脚本通过sftp快速上传文件夹到树莓派的脚本
可以直接拖拽,会自动上传到树莓派./Desktop/文件夹下
按需修改代码中地址和登录密码即可使用

安装依赖

pip instal paramiko

autoftp.py

#! python3
# -*- coding:utf-8 -*- 
import paramiko
import sys 
import os
import os.path
socks=('192.168.2.100',22)#此处写树莓派的地址
testssh=paramiko.Transport(socks)
testssh.connect(username='pi',password='raspberry')#ssh账号密码
sftptest=paramiko.SFTPClient.from_transport(testssh)
rootdir=sys.argv[1]
rootnamelen=len(rootdir)-len(rootdir.split('\\')[-1])

if os.path.isdir(rootdir) and not rootdir[rootnamelen:] in sftptest.listdir("./Desktop/"):
    tempdir=("./Desktop/"+rootdir[rootnamelen:]).replace('\\','/')
    print("mkdir: ",tempdir)
    sftptest.mkdir(tempdir)
    for parent,dirnames,filenames in os.walk(rootdir):
        for dirname in  dirnames:
            print ("parent is:" + parent+ "  dirname is:" + dirname)
            tempdir=("./Desktop/"+parent[rootnamelen:]+'/'+dirname).replace('\\','/')
            print("mkdir: ",tempdir)
            sftptest.mkdir(tempdir)
        for filename in filenames:
            print ("Upload File: parent is:" + parent +"  filename is:" + filename)
            sftptest.put(parent+'\\'+filename,("./Desktop/"+parent[rootnamelen:]+'/'+filename).replace('\\','/'))
if not os.path.isdir(rootdir):
    sftptest.put(rootdir,"./Desktop/"+rootdir.split('\\')[-1])
    print("upload ",rootdir.split('\\')[-1],"succeed")
else:
    print("dir is already exist")
sftptest.close()
testssh.close()
print("done, sftp closed")

下面是一个win 下的bat脚本实现拖拽功能

注意将目录换为autoftp.py所在目录

echo %1
E:
cd E:XXX\XXX
py -3 autoftp.py %1
pause

然后直接将目标文件夹拖到这个bat上就可以实现自动上传了!

### 通过命令行或工具将本地文件传输到树莓派 #### 使用 SFTP 命令行方式 SFTP 是一种安全的文件传输协议,可以通过 SSH 进行文件传输。以下是具体操作方法: 1. **连接至树莓派** 打开终端并输入以下命令来建立与树莓派的 SFTP 连接: ```bash sftp username@raspberrypi5_ip_address ``` 替换 `username` 和 `raspberrypi5_ip_address` 为实际的用户名和 IP 地址[^2]。 2. **上传文件** 成功登录后,可以使用 `put` 命令将本地文件上传到树莓派: ```bash put local_file_path remote_directory_path ``` 其中 `local_file_path` 表示本地文件路径,`remote_directory_path` 表示目标存储位置[^1]。 3. **下载文件** 如果需要从树莓派下载文件到本地,则可使用 `get` 命令: ```bash get remote_file_path local_directory_path ``` --- #### 使用 PyCharm 工具进行文件同步 如果希望借助图形化界面完成文件传输,PyCharm 提供了一种便捷的方式: 1. **创建 SFTP 配置** 在 PyCharm 中依次选择菜单项 `Tools -> Deployment -> Configuration`,点击左侧的加号 (`+`) 创建一个新的 SFTP 类型配置[^2]。 2. **SSH 设置** 输入树莓派的相关信息,包括 IP 地址、端口 (默认为 22)、用户名和密码,并测试连接是否正常[^2]。 3. **设置映射关系** 定义本地代码目录与树莓派上的远程目录之间的映射关系。填写对应的本地路径和部署路径后保存配置[^2]。 4. **执行文件上传** 右键项目中的文件或整个文件夹,在上下文菜单中选择 `Upload to...` 即可实现自动化的文件传输过程[^2]。 --- #### 利用 PuTTY 的 PSFTP 功能 对于 Windows 用户来说,PuTTY 软件包内的 PSFTP 工具也是一种简单易用的选择: 1. 启动 PSFTP 并指定服务器地址及相关认证参数;例如运行如下指令启动会话: ```cmd psftp username@raspberrypi5_ip_address ``` 2. 登录成功之后按照提示输入账户密码进入交互模式下继续下一步动作[^3]。 3. 应用之前提到过的标准语法结构实施资料搬运工作——比如采用 'put' 来达成目的等等[^3]. --- ```python # 示例 Python 脚本用于自动化批量处理多个文件上传任务 import paramiko def upload_files_to_raspberry_pi(host, port, username, password, local_dir, remote_dir): try: transport = paramiko.Transport((host, int(port))) transport.connect(username=username, password=password) sftp = paramiko.SFTPClient.from_transport(transport) for file_name in os.listdir(local_dir): local_path = f"{local_dir}/{file_name}" remote_path = f"{remote_dir}/{file_name}" sftp.put(local_path, remote_path) sftp.close() transport.close() except Exception as e: print(f"Error occurred while uploading files: {e}") upload_files_to_raspberry_pi('your_host', '22', 'pi_user', 'password!', '/path/to/local/files/', '/home/pi/destination/') ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值