Как использовать getmtime для нескольких файлов

81
4

Мой текущий скрипт python:

import ftplib
import hashlib
import httplib
import pytz
from datetime import datetime
import urllib
from pytz import timezone
import os.path, time
import glob

def ftphttp():
ts = os.path.getmtime('Desktop/images/frame00.png')
dt = datetime.fromtimestamp(ts, pytz.utc)

timeZone= timezone('Asia/Singapore')
#converting the timestamp in ISOdatetime format
localtime = dt.astimezone(timeZone).isoformat()

cam = "002"
lscam = localtime + cam
ftp = ftplib.FTP('localhost','kevin403','S$ip1234')
ftp.cwd('/var/www/html/image')

m=hashlib.md5()
m.update(lscam)
dd=m.hexdigest()

for image in glob.glob(os.path.join('Desktop/images/frame**.png')):
with open(image, 'rb') as file:
ftp.storbinary('STOR '+dd+ '.png', file)

x = httplib.HTTPConnection('localhost', 8086)
x.connect()
f = {'ts' : localtime}
x.request('GET','/camera/store?cam='+cam+'&'+urllib.urlencode(f)+'&fn='+dd)
y = x.getresponse()
z=y.read()
x.close()
ftp.quit()

Поскольку прямо сейчас эта строка кода получает только одну временную метку файла:

ts = os.path.getmtime('Desktop/images/frame00.png'). 

Но что, если я отправляю несколько файлов из папки и получаю все временные метки файлов. Можно ли это сделать? Я использую ftplib для отправки нескольких из папки в другую папку.

спросил(а) 2016-08-14T18:20:00+03:00 4 года, 2 месяца назад
1
Решение
91

Вы можете просто ходить по каталогу и getmtime для всех файлов в этом каталоге, если рассматриваемый каталог - Desktop/images

Вы можете заменить

ts = os.path.getmtime('Desktop/images/frame00.png') 
dt = datetime.fromtimestamp(ts, pytz.utc)

Что-то вроде:

dirToCheck = 'Desktop/images'
for root, _, file in os.walk(dirToCheck):
fileToCheck = os.path.join(root, file)
ts = os.path.getmtime(fileToCheck)
dt = datetime.fromtimestamp(ts, pytz.utc)
print ts, dt

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

Если вы хотите сделать это только для png, вы также можете добавить строку, например:

if file.endswith(".png"): 

перед линией fileToCheck.

Это должно сделать это, если я не понял ваш вопрос.

ответил(а) 2018-08-08T18:48:00+03:00 2 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема