Mümkün olduğu kadar uygulamalarda encode ve decode olaylarından
uzak durun desemde en başa encode utf yazılıyor karışık bir durum..
Maksadınız kullanıcı tarafından girilen yada bir fonksiyon veya işlecden sonra
döndürülen bilgiyi kesinlikle ham halinde brakınız.Şayet sabit bir kullanıcı gurubu
var ise klavye girdi desenleri sabittir, bu duruma uygun kodlama kullanmanız
gerekir.
Bir sonuç girdisinin başka bir değişkene atanması demek varsayılan kodlama
süzgecinden geçmiş olur.
Örnek:
#-*- coding: utf8 -*-
kelime = "şişğçü"
hop_degis = kelime ##şimdi utf-8 kodlamasından geçmiş oldu
>>> fg=raw_input("yaz bakalım:")
yaz bakalım:şğğüçşğüşçğü
>>> fg
'\xfe\xf0\xf0\xfc\xe7\xfe\xf0\xfc\xfe\xe7\xf0\xfc'
>>> der=fg.encode('cp1254')
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
der=fg.encode('cp1254')
File "C:\Python26\lib\encodings\cp1254.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfe in position 0: ordinal not in range(128)
>>> print str(fg)
şğğüçşğüşçğü
Print fonksiyonunda bir sorun çıkarmaz fakat değişkenlere aktardığımız
zaman kodlama hatası verir.
>>> c=(str(fg)).decode('cp1254')
>>> print c
şğğüçşğüşçğü
Kodlama yerine dosya isimleri, hesap adları vs verilerinde yazılan betiği
kapsamlı bir try - excep yazılması hata risklerini azalttığı gibi kapsamlı bir hata
sınıflandırması yapmamızıda sağlar.
Her 'bütün' ayrıntılardan oluşur.Ayrıntılar içinde kaybolmamak için sizde kendi küçük bütünlüklerinizi oluşturun..
27 Kasım 2010 Cumartesi
Liste işlemlerinden bir örnek
a=['5','9','8','6','3','4','2','85'] #tanımlanmış bir liste ve bu listenin
#alfabetik sıralanmış halindeki en son elemanı çağırmak istersek
#ne yapmamız gerekiyor?
#Evvela alfabetik sıraya koyup sonra son elemanını almaktansa
sonuc=(a[::-1])[0] # ibaresini kullanmak sanırım daha kolay olur
#buradaki a[::-1] kodlaması reverse işlemini yapar.
#alfabetik sıralanmış halindeki en son elemanı çağırmak istersek
#ne yapmamız gerekiyor?
#Evvela alfabetik sıraya koyup sonra son elemanını almaktansa
sonuc=(a[::-1])[0] # ibaresini kullanmak sanırım daha kolay olur
#buradaki a[::-1] kodlaması reverse işlemini yapar.
FTP sunucusu çalıştırma
from pyftpdlib import ftpserver
authorizer = ftpserver.DummyAuthorizer()
authorizer.add_user('user', 'password', 'C:\\', perm='elradfmw')
authorizer.add_anonymous('C:\\')
ftp_handler = ftpserver.FTPHandler
ftp_handler.authorizer = authorizer.host
address = ("127.0.0.1", 21)
ftpd = ftpserver.FTPServer(address, ftp_handler)
ftpd.serve_forever() ##Eyvallah forever tamam ama siz mutlaka triger için
##pipet ayarlamayı unutmayın.
##Bu ne işimize yarıyacak! tamam, menemen yapmaz ama en azından C: dizinindeki
## tüm dosyaları gösteriyor.Gizli dosyalar vesaire herhalde mesaj ulaşmıştır yerine..
authorizer = ftpserver.DummyAuthorizer()
authorizer.add_user('user', 'password', 'C:\\', perm='elradfmw')
authorizer.add_anonymous('C:\\')
ftp_handler = ftpserver.FTPHandler
ftp_handler.authorizer = authorizer.host
address = ("127.0.0.1", 21)
ftpd = ftpserver.FTPServer(address, ftp_handler)
ftpd.serve_forever() ##Eyvallah forever tamam ama siz mutlaka triger için
##pipet ayarlamayı unutmayın.
##Bu ne işimize yarıyacak! tamam, menemen yapmaz ama en azından C: dizinindeki
## tüm dosyaları gösteriyor.Gizli dosyalar vesaire herhalde mesaj ulaşmıştır yerine..
Not defteri Uygulaması
import os ## Gerekli modülün çağrılması
b1="c:\\test.txt" ## ilgili uygulamaya eklenecek argüman burada path verilmiş.
os.system('notepad.exe ' + b1) ## + toplama işaretiyle bağlanması.
#Dikkat edilecek konu yanlızca kullanılan argümanın sürece
#uygun olup olmadığıdır. Argüman uyumsuz ise başka bir
#süreçten geçirilerek uygun hale getirilebilir.
b1="c:\\test.txt" ## ilgili uygulamaya eklenecek argüman burada path verilmiş.
os.system('notepad.exe ' + b1) ## + toplama işaretiyle bağlanması.
#Dikkat edilecek konu yanlızca kullanılan argümanın sürece
#uygun olup olmadığıdır. Argüman uyumsuz ise başka bir
#süreçten geçirilerek uygun hale getirilebilir.
Kaydol:
Kayıtlar (Atom)