20-03-2013 15:23, What you get is Not what you see yazmış:
Fazla mesaj kirliligi olmasin ama eklemeyi unutmusum
Neredesin python oneliner? :)
Selamlar,
Buyrun... :)

Açıklamalı örnek ektedir...

--
Kolay gelsin,
Mucip:)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#       isimsiz.py
#       
#       Copyright 2013 mucip <mucip@debian-ev>
#       örnek bir uygulamadır...
#       [email protected]

# Burada programda kullanılan
# Kütüphaneler ekleniyor. 
#from tkMessageBox import *
import sqlite3
#from string import *
#import time
#import math
#import locale

# Burada veritabanı oluşturuyoruz. Dikkat edersen hafızaya da VT oluşturabiliyorsun.
# VT değişkenleri ve kursör'ü değiştir istersen. Korkunç hızlı çalışıyor :)

connection=sqlite3.connect('DataLogger.db')
connectionMemory=sqlite3.connect(':memory:')
cursor = connection.cursor()
#cursor2 = connection.cursor()
#cursor3 = connectionMemory.cursor()
#Veritabanı dosyası yoksa eğer burada oluşturuluyor...
cursor.execute('CREATE TABLE if not exists Tablo  (SiraNo INTEGER PRIMARY KEY AUTOINCREMENT, DegiskenI VARCHAR(20), DegiskenYil VARCHAR(2), DegiskenAy VARCHAR(2), DegiskenGun VARCHAR(2), DegiskenSaat VARCHAR(2), DegiskenDakika VARCHAR(2), DegerR REAL, DegerG REAL, DegerS REAL, DegerB REAL, DegerRY REAL, DegerRH REAL, DegerMRY REAL, DegerMRH REAL)')
#connectionMemory.commit()
connection.commit()
# Varolan kayıtları siliyor. Çakışma olmasın diye. Ama sadece tek bir dosya ile çalışacaksanız bu satırı kaldırabilirsiniz de?
cursor.execute('DELETE FROM Tablo')
connection.commit()

# Bu kısımda metin dosya okunuyor. 
# Okuma döngüsünde ";" ayracına göre parçalanıyor ve veritabanına yazılmaya başlıyor...

crs = open("data.txt", "r")
sayac = 0
for columns in ( raw.strip().split(";") for raw in crs ):
	# İlk satırda kolon başlıkları var. Bu satırı pas geçmesi için bu kontrlü koyuyoruz...
	if sayac > 0:
		cursor.execute('INSERT INTO Tablo (DegiskenI, DegiskenYil, DegiskenAy, DegiskenGun, DegiskenSaat, DegiskenDakika, DegerR, DegerG, DegerS, DegerB, DegerRY, DegerRH, DegerMRY, DegerMRH) VALUES("'+ columns[0] +'","'+ columns[1] +'", "'+ columns[2] +'", "'+ columns[3] +'", "'+ columns[4] +'", "'+ columns[5] +'", "'+ columns[6] +'", "'+ columns[7] +'", "'+ columns[8] +'", "'+ columns[9] +'", "'+ columns[10] +'", "'+ columns[11] +'", "'+ columns[12] +'", "'+ columns[13] +'")')
		connection.commit()
	sayac = sayac + 1
	#connectionMemory.commit()
	print "Yazılan satır: ", sayac
	
print "Tüm dosya veritabanına yazıldı. Ortalamaları almaya başladı..."

# Burada artık veritabanından okumaya başlıyor...
# Değişkenler belirleniyor...

ToplamR = 0
ToplamG = 0
ToplamS = 0
Adet = 0

# İlk satırdaki saat bilgisini alıyor

cursor.execute('SELECT * FROM Tablo')
Bul=cursor.fetchone()
OncekiSaat = Bul[5]


cursor.execute('SELECT * FROM Tablo')
for row in cursor:	
	if row[5] <> OncekiSaat:
		OrtalamaR = ToplamR / Adet
		OrtalamaG = ToplamG / Adet
		OrtalamaS = ToplamS / Adet
		print  "Yıl: ", row[2], " Ay: ", row[3], " Gun: ", row[4], " Saat: ", OncekiSaat, " Ortalama R: ", OrtalamaR, " Ortalama G: ", OrtalamaG, " Ortalama S: ", OrtalamaS
		Adet = 0
		ToplamR = 0
		ToplamG = 0
		ToplamS = 0
		OncekiSaat = row[5]
	Adet = Adet + 1
	ToplamR = ToplamR + row[7]
	ToplamG = ToplamG + row[8]
	ToplamS = ToplamS + row[9]
                     

# İşlem bitiminde açık olan kursör, bağlantılar ve metin dosya kapatılıyor...
cursor.close()
connection.close()
crs.close()

_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap