Простая передача файлов по Wi-Fi между компьютером и мобильным телефоном с помощью Python

Когда я пишу код для меня - НИКАКОЙ . В этом случае Java doccing является пустой тратой моего времени.

, Когда я запишу код, который другие будут использовать - Да . Каждый метод, который кто-то еще может использовать (любой открытый метод) должен иметь документ Java, по крайней мере, формулирующий его очевидную цель. Для хорошего теста - выполняет javadoc утилиту создания на Вашем коде (я забываю точную командную строку теперь). Просмотрите веб-страницу, которую это генерирует. Если Вы были бы удовлетворены, пользуясь библиотекой с тем уровнем документации, Вы являетесь золотыми. В противном случае Запись больше javadocs в Вашем коде .

6
задан foosion 20 September 2009 в 19:53
поделиться

3 ответа

В итоге я использовал ftplib Python на телефоне и FileZilla, ftp-сервер, на компьютере. Преимущества заключаются в высокой степени простоты, хотя могут быть проблемы с безопасностью.

Если кому-то интересно, вот внутренности клиентского кода для отправки и получения файлов. Фактическая реализация имеет немного больше инфраструктуры.

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()
1
ответ дан 17 December 2019 в 07:07
поделиться

Я бы использовал 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.SFTPClient.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()

Как это ?? Я должен отдать кредит этому примеру.

3
ответ дан 17 December 2019 в 07:07
поделиться

Есть пара примеров , но вы должны помнить, что IIRC, PyBluez будет работать только в Linux.

Я ранее сделал вещи, связанные с OBEX, в основном получая данные из мобильные телефоны, используя программу obexftp 2 , которая является частью Проект OpenOBEX 3 . Естественно, вы можете вызвать программу obexftp из Python и интерпретируйте ответы и коды выхода с помощью функций в модули os, popen2 и subprocess. Я считаю, что obexftp тоже поддерживает режим "push", но вы наверняка сможете найти что-нибудь еще связанных с OpenOBEX, если это не так.

Поскольку связь Bluetooth поддерживается с использованием сокетов в GNU / Дистрибутивы Linux и Python (при условии, что поддержка Bluetooth обнаружен и настроен), вы можете общаться с телефонами, используя простое сетевое программирование, но это, вероятно, потребует от вас самостоятельно реализовать протоколы OBEX - непростая задача для ряд причин, в том числе одну, которую я упоминаю ниже. Таким образом, это вероятно, проще использовать obexftp, по крайней мере, на начальном этапе.

У вас также есть lightblue , это библиотека bluetooth для разных операционных систем.

Также есть полный сценарий, PUTools: Python Utility Инструменты для PyS60 Python (в примерах есть скриншоты Windows), который имеет:

интерпретатор Python, который принимает ввод и показывает вывод на ПК, подключается через Bluetooth к телефону и запускается на телефоне. Вы также получаете простую функциональность оболочки для телефона (cd, ls, rm и т. Д.). Этот инструмент также позволяет синхронизировать файлы как с ПК на телефон (очень полезно при разработке приложений), так и с телефона на ПК (ваши изображения, файлы журнала программы, над которой вы работаете, и т. Д.).

0
ответ дан 17 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: