电脑手机wifi互传文件:使用python在电脑和手机之间通过wifi进行简单的文件传输

我希望能够在我的手机和电脑之间传输文件。该手机是可以运行 python 2.5.4 的智能手机,并且计算机运行的是 windows xp (带有 python 2.5.4 和 3.1.1)。

我想在手机上有一个简单的 python 程序,可以将文件发送到计算机并从计算机获取文件。电话端应该只在调用时运行,计算机端可以是服务器,尽管最好是不使用大量资源的东西。电话端应该能够弄清楚计算机上的相关目录中有什么。

目前,我通过在计算机上运行 Windows Web 服务器(ugh)和带有 socket.set_default_access_point 的脚本(因此该程序可以选择我的路由器的 ssid 或其他传输)和 urlretrieve(获取文件)在手机上。我使用 smtplib 通过电子邮件发送文件。

建议将不胜感激,无论是一般的想法,现有的程序或之间的任何东西。

3

我会使用paramiko。这是安全的快速和非常简单。

所以我们从导入模块开始,并指定日志文件:

import paramiko
paramiko.util.log_to_file('/tmp/paramiko.log')

我们打开一个 SSH 传输:

host = "example.com"
port = 22
transport = paramiko.Transport((host, port))

接下来我们要进行身份验证。我们可以使用密码执行此操作:

password = "example101"
username = "warrior"
transport.connect(username = username, password = password)

另一种方法是使用 SSH 密钥:

import os
privatekeyfile = os.path.expanduser('~/.ssh/id_rsa')
mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)
username = 'warrior'
transport.connect(username = username, pkey = mykey)

现在我们可以启动 SFTP 客户端:

sftp = paramiko.SFTP.from_transport(transport)

现在让我们将文件从远程拉到本地系统:

filepath = '/home/zeth/lenna.jpg'
localpath = '/home/zeth/lenna.jpg'
sftp.get(filepath, localpath)

现在让我们走另一条路:

filepath = '/home/zeth/lenna.jpg'
localpath = '/home/zeth/lenna.jpg'
sftp.put(filepath, localpath)

最后,我们需要关闭 SFTP 连接和传输:

sftp.close()
transport.close()

怎么样??我必须给credit这个例子。

1

我最终在手机上使用 python 的 ftplib,在电脑上使用 ftp 服务器 FileZilla。优点是高度简单,尽管可能存在安全问题。

如果有人关心,这里是客户端代码的胆量发送和接收文件。实际实现有更多的基础设施。

from ftplib import FTP
import os
ftp = FTP()
ftp.connect(server, port)
ftp.login(user, pwd)
files = ftp.nlst() # get a list of files on the server
# decide which file we want
fn = 'test.py' # filename on server and for local storage
d = 'c:/temp/' # local directory to store file
path = os.path.join(d,fn)
r = ftp.retrbinary('RETR %s' % fn, open(path, 'wb').write)
print(r) # should be: 226 Transfer OK
f = open(path, 'rb') # send file at path
r = ftp.storbinary('STOR %s' % fn, f) # call it fn on server
print(r) # should be: 226 Transfer OK
f.close()
ftp.quit()
0

a couple of examples在那里,但你必须记住,IIRC,PyBluez 只能在 Linux 上工作。

我以前做过 OBEX 相关的事情,主要是从手机上获取东西,使用 obexftp 程序2,它是 OpenOBEX 项目3的一部分。自然,您可以从 Python 调用 obexftp 程序,并使用 os,popen2 和子进程模块中的函数解释响应和退出代码。我相信 obexftp 也支持“push”。

由于在 GNU / Linux 发行版和 Python 中使用套接字支持蓝牙通信(前提是检测到并配置了蓝牙支持),因此您可以使用普通网络编程与手机通信,但这可能需要您自己实现 OBEX 协议-由于多种原因,这不是一项简单的任务,包括我在提到的一个原因。因此,至少在最初使用 obexftp 可能更容易。

你也有lightblue,这是一个跨操作系统的蓝牙库。

还有一个完整的脚本PUTools: Python Utility Tools for PyS60 Python(示例中有 Windows 屏幕截图),它具有:

该工具还允许您将文件从 PC 同步到手机 (在应用程序开发中非常有用) 以及从手机同步到 PC (您的图像、您正在处理的程序中的日志文件等)。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(244)
有机化学ch2:如何在Python中使用rdkit确定任何分子的链烷烃CH3 CH2和CH基团的数量
上一篇
Python函数传入列表:要加入传入列表的收集器(collectors.join)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(39条)