Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2010 10:13:14

Artem
От:
Зарегистрирован: 2009-12-30
Сообщения: 24
Репутация: +  -1  -
Профиль   Отправить e-mail  

Статус закачиваемого файла

Допустим мне надо сделать чего-то с файлом, а файл лежит на ftp - сервере. Как мне можно проверить что файл в данный момент не докачивается в смысле его на сервер не заливают?
Спасибо за внимание



Отредактировано (Янв. 28, 2010 10:18:44)

Офлайн

#2 Янв. 28, 2010 13:52:22

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Статус закачиваемого файла

import time
import ftplib

host = "ftp.yandex.ru"
user = "user"
passwd = "passwd"
filename = "movie.avi"

conn = ftplib.FTP(host, user, passwd)

def is_uploading(filename):
size_1 = conn.size(filename)
time.sleep(3)
size_2 = conn.size(filename)
if size_2 != size_1:
return True
else:
return False

if is_uploading(filename):
print u"Файл {0} Качается :(".format(filename)
Как-то так по идее.
Проверить не на чем, так что возможны ошибки



Отредактировано (Янв. 28, 2010 13:53:40)

Офлайн

#3 Янв. 28, 2010 14:51:04

expee
От:
Зарегистрирован: 2009-12-21
Сообщения: 197
Репутация: +  0  -
Профиль   Отправить e-mail  

Статус закачиваемого файла

Проверяй по размеру. Через каждые x секунд проверяй - не увеличился ли размер файла.



Офлайн

#4 Янв. 28, 2010 15:39:19

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Статус закачиваемого файла

Есть ещё команда “MDTM” - возвращает время последней модификации.

Офлайн

#5 Янв. 29, 2010 04:11:55

Artem
От:
Зарегистрирован: 2009-12-30
Сообщения: 24
Репутация: +  -1  -
Профиль   Отправить e-mail  

Статус закачиваемого файла

Наверное я неправильно выразился: для программы файл находиться на той же машине, просто этот файл могут в этот момент заливать по FTP.
Последняя модификация: сначала так и пробовал, но выяснилось что последняя модификация может и прошлый год показывать

# -*- coding: cp1251 -*-
import os
import stat
import time
import datetime

fstat = os.stat ("d:\\ftp\\movie.avi" )

st_mtime = fstat.st_mtime # время последней модификации
t = datetime.datetime.now()
curr_time=time.mktime(t.timetuple())

if (curr_time-st_mtime) < 2:
print 'качается!'
print curr_time-st_mtime

else:
print 'закачен!'
print curr_time-st_mtime
Получается здесь надо просто заменить на проверку по размеру? Спасибо всем ответившим.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version