Как перенести файл между двумя подключенными компьютерами в python? - PullRequest
6 голосов
/ 04 января 2012

Не знаю, был ли ответ на этот вопрос раньше (я посмотрел в Интернете, но не смог его найти), но как я могу отправить файл (.exe, если это возможно) по сети на другой компьютер, подключенный ксеть?Я пробовал сокеты, но я мог только посылать строки, и я пытался выучить ftplib, но я его совсем не понимаю, или даже если ftp - это то, что я ищу, так что я в полной остановке.Любой вклад приветствуется (тем более, если кто-то может объяснить FTP, это как сокет? Во всех примерах, которые я видел, нет серверной программы, к которой клиент может подключиться.)

Ответы [ 4 ]

8 голосов
/ 04 января 2012

A. Python3

Мы можем использовать http.server для этого. От ТАК ответ здесь , SimpleHTTPServer перемещен в http.server в python3.

python -m http.server

python2

Я иногда использую SimpleHTTPServer:

python -m SimpleHTTPServer

... который будет обслуживать файлы в текущем каталоге на порту 8000. Откройте веб-браузер на другом компьютере и загрузите все, что вы хотите.

Чтобы узнать IP-адрес вашего компьютера, вы можете использовать (в Ubuntu) ifconfig, например:

$ ifconfig
enp0s31f6 Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:10.0.0.3  Bcast:10.0.0.255  Mask:255.255.255.0

В Windows это ipconfig.

Затем на другом компьютере вы отправляете браузер по адресу: http://10.0.0.3:8000.

B. Если у вас включен SSH, вы можете использовать paramiko для подключения и передачи SFTP, как хотите.

5 голосов
/ 04 января 2012

Некоторый упрощенный пример кода для отправляющей стороны:

if os.path.exists(df):
  with open(df, 'rb') as f:
    packet = f.read(blocksize)

    while packet != '':
      conn.send(packet)

      packet = f.read(blocksize)

Где:

df = 'path/to/data/file'
blocksize = 8192 # or some other size packet you want to transmit.  
                 # Powers of 2 are good.
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
3 голосов
/ 04 января 2012

ZeroMQ помогает заменить розетки.

Вы можете отправить весь файл в одной команде.

«Вечеринка» ZMQ может быть написана на любом основном языке, и для данного программного обеспечения на базе ZMQ не имеет значения, какой другой конецэто написано в.

С их сайта:

Это дает вам сокеты, которые передают целые сообщения через различные транспорты, такие как внутрипроцессный, межпроцессный, TCP и многоадресныйВы можете соединить сокеты N-to-N с такими шаблонами, как разветвление, pub-sub, распределение задач и запрос-ответ.

3 голосов
/ 04 января 2012

Проверьте Paramiko. Может делать scp и sftp.

http://www.lag.net/paramiko/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...