Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/121: Рейтинг темы: голосов - 121, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 21
1

Пересылка файлов.

18.12.2010, 00:14. Показов 22575. Ответов 14
Метки нет (Все метки)

Привет. Помогите новичку. Каким образом переслать файл с одного компьютера на другой (от клиента серверу), используя Python?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2010, 00:14
Ответы с готовыми решениями:

Пересылка файлов
Есть задание, надо переслать файлы из указанной директории используя сервер, почитал при помощи...

Пересылка файлов
Здравствуйте! Реализую следующий проект: пересылка xml-файлов по сети по запросу пользователя....

делфи пересылка файлов
И так у меня есть файлы которые мне надо перекинуть другому человеку и приэтом через делфи и чтоб...

Пересылка файлов по мылу.
Подскажите, каким образом можно переслать в email'е файл, чтоб он был распакован только конечным...

14
3504 / 1668 / 601
Регистрация: 29.11.2010
Сообщений: 3,483
18.12.2010, 12:40 2
По какому протоколу?
1
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 21
18.12.2010, 13:16  [ТС] 3
Цитата Сообщение от lemegeton Посмотреть сообщение
По какому протоколу?
По TCP
0
3504 / 1668 / 601
Регистрация: 29.11.2010
Сообщений: 3,483
18.12.2010, 15:02 4
Это вам нужны сокеты или упрощенный фреймворк SocketServer.

Не по теме:

Лень такое писать - многабукаф.

1
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 21
18.12.2010, 15:13  [ТС] 5
Цитата Сообщение от lemegeton Посмотреть сообщение
Это вам нужны сокеты или упрощенный фреймворк SocketServer.

Не по теме:

Лень такое писать - многабукаф.

Да, используя socket. Понимаю, что писать много. Текстовое сообщение передать удалось. Подскажите каким образом вместо передачи сообщения, прикрепить файл, размером, скажем 100Мб?
0
3504 / 1668 / 601
Регистрация: 29.11.2010
Сообщений: 3,483
18.12.2010, 15:23 6
Не "прикрепить", а "передать". Частями.

Добавлено через 7 минут
Есть кодирование для плейн-текста, если хочется.
Python
1
2
3
4
file = open("binary.file", "rb")
while not file.eof:
    buff = file.read(1024) # считать 1024 байт
    string = base64.b64encode(buff) # base64 кодирование
1
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 21
18.12.2010, 15:32  [ТС] 7
Цитата Сообщение от lemegeton Посмотреть сообщение
Не "прикрепить", а "передать". Частями.

Добавлено через 7 минут
Есть кодирование для плейн-текста, если хочется.
Python
1
2
3
4
file = open("binary.file", "rb")
while not file.eof:
    buff = file.read(1024) # считать 1024 байт
    string = base64.b64encode(buff) # base64 кодирование
Спасибо, и последний вопрос. А как на другом конце провода (на сервере) произвести обратную операцию, которую вы описали, и указать путь куда файл будет сохранён?
0
3504 / 1668 / 601
Регистрация: 29.11.2010
Сообщений: 3,483
18.12.2010, 16:32 8
Да. На другой стороне открыть файл, и записывать туда декодированный буффер.
1
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 21
18.12.2010, 18:32  [ТС] 9
Вот, кое-что написал. Подкорректируйте ошибки.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#client
 
from socket import *
import string
 
HOST = "..."
PORT = 8184
s = socket(AF_INET,SOCK_DGRAM)
s.connect((HOST, PORT))
print "Client running on %s port %s" % (HOST, PORT)
file = open("C:/1.jpg", "rb")
while not file.eof:
        buff = file.read(1024)
        string = base64.b64encode(buff) 
        s.send(file)
        print 'Data has been sent'       
                  
s.close()
0
3504 / 1668 / 601
Регистрация: 29.11.2010
Сообщений: 3,483
18.12.2010, 20:06 10
На вскидку.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#client
 
from socket import *
import string
 
HOST = "..."
PORT = 8184
s = socket(AF_INET,SOCK_DGRAM)
s.connect((HOST, PORT))
print "Client running on %s port %s" % (HOST, PORT)
file = open("C:/1.jpg", "rb")
while not file.eof:
        buff = file.read(1024)
        string = base64.b64encode(buff) 
        s.send(file) # а не string?
        print 'Data has been sent'       
                  
s.close()
И тебе бы какой-нить заголовочек придумать, или как ты собираешься отслеживать завершение передачи файла?
1
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 21
18.12.2010, 20:17  [ТС] 11
На сервере будет аналогичный скрипт для приёма файла.

Пока хоть бы этот без ошибок сделать. На данный момент пишет:

Python
1
2
3
4
Traceback (most recent call last):
  File "C:\...\client.py", line 14, in <module>
    while not file.eof:
AttributeError: 'file' object has no attribute 'eof'
В чем может быть дело?
0
3504 / 1668 / 601
Регистрация: 29.11.2010
Сообщений: 3,483
18.12.2010, 20:31 12
Да, файл читать не так надо.
Python
1
2
3
4
5
6
while True:
        buf = file.read(40)
        if len(buf) == 0:
                break
        str = base64.b64encode(buf)
        print str
1
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 21
18.12.2010, 21:46  [ТС] 13
Теперь возникли трудности с созданием сервера. Написал такое:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#server
 
from socket import *
import string
import base64
 
HOST = ''                 
PORT = 8188
s = socket(AF_INET,SOCK_DGRAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
file = open("D:/", "wb")
while 1:
        file=conn.recv(str)
        buf = str.write(1024)
        str = base64.b64decode(buf)
        if not data:
                    break
conn.close()
Подкорректируйте ошибки. Особенно последовательность строк после while. И еще выкидывает:

Python
1
2
3
4
5
6
Traceback (most recent call last):
  File "C:\python 25\server.py", line 11, in <module>
    s.listen(1)
  File "C:\Program Files\Python\lib\socket.py", line 222, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 10045] The attempted operation is not supported for the type of object referenced
0
3504 / 1668 / 601
Регистрация: 29.11.2010
Сообщений: 3,483
18.12.2010, 22:13 14
Попробуйте SOCK_STREAM вместо SOCK_DGRAM.
1
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 21
18.12.2010, 22:21  [ТС] 15
Цитата Сообщение от lemegeton Посмотреть сообщение
Попробуйте SOCK_STREAM вместо SOCK_DGRAM.
Спасибо, помогло. Осталось разобраться со строчками после while.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2010, 22:21

Пересылка файлов через сокеты
Пишу чат, пытаюсь разобраться. Не выходит сделать передачу файлов. Помогите... Выдает ошибку...

Пересылка группы файлов на хост
Ест программа которая по инажатию отпровляет фаил на хост А есть ли способ сделат ь чтобы она...

Пересылка больших файлов через Socket
Привет Пишу клиент сервер и проблема такая При передачи маленьких файлов все ок, файл доходит...

Пересылка
Привет всем! Пожалуйста, объясните мне как определяется пересылка в сортировке (количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru