Форум сайта python.su
Допустим мне надо сделать чего-то с файлом, а файл лежит на ftp - сервере. Как мне можно проверить что файл в данный момент не докачивается в смысле его на сервер не заливают?
Спасибо за внимание
Отредактировано (Янв. 28, 2010 10:18:44)
Офлайн
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)
Офлайн
Проверяй по размеру. Через каждые x секунд проверяй - не увеличился ли размер файла.
Офлайн
Есть ещё команда “MDTM” - возвращает время последней модификации.
Офлайн
Наверное я неправильно выразился: для программы файл находиться на той же машине, просто этот файл могут в этот момент заливать по 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
Офлайн