2016-08-15 9 views
0

私の現在のPythonスクリプト:例外TypeError:フロートが必要とされる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(): 
dataset_path='Desktop' 
files = glob.glob(dataset_path+"/images/*.png") 
ts = files.sort(key=os.path.getmtime) 
dt = datetime.fromtimestamp(ts, pytz.utc) 
timeZone= timezone('Asia/Singapore') 
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/*.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() 

トラックバック:

Traceback (most recent call last): 
File "<pyshell#49>", line 1, in <module> 
ftphttp() 
File "/home/kevin403/Testtimeloop.py", line 17, in ftphttp 
dt = datetime.fromtimestamp(ts, pytz.utc) 
TypeError: a float is required 

私は彼らの修正タイムスタンプとストアを取得するには、フォルダ内のファイルの一覧を取得しようそれはデータベース内にある。しかし、私はそれを行うように見えることはできません。誰もそれをどうやって行うのか考えましたか?私はかなり長い間それを試してきました、そして、私はPythonを初めて使っています。

+1

関連はありませんが、標準の4スペースインデントに切り替えることを強くお勧めします... – Julien

答えて

1

これは、関数glob.globが文字列の配列を返し、この結果を数値を必要とする「datetime.fromtimestamp」関数に渡そうとしているために発生します。

変更した日付を「保存」した後、いつでも使用できます。

ファイルを1つずつ操作する必要があります。例(私がテストしていない):

files = glob.glob(dataset_path+"/images/*.png") 
ts = map(os.path.getmtime, files) 
dts = map(datetime.fromtimestamp, ts) 
... 

参考文献:

https://docs.python.org/2/library/datetime.html#datetime.date.fromtimestamp https://docs.python.org/2/library/glob.html#glob.glob

files = glob.glob(dataset_path+"/images/*.png") 
ts = files.sort(key=os.path.getmtime) 
for file in ts: 
    ms = os.path.getmtime(file) 
    dt = datetime.fromtimestamp(ms) 
... 

するか、あなただけの(ファイルのパスなし)変更日を必要とする場合

+0

今、私はすべてのファイルリストをプリントアウトできます属性エラー: 'list'オブジェクトに属性 'astimezone'がありません –

+0

[1467910949.379998、1466578005.0、1466528946.0] –

+0

私はpytzタイムゾーンが必要でしたが、どうすればいいですか? –

関連する問題