Selamlar herkese,
Pythonla işim düştükçe program geliştiren bir insanım. Web-scraping,crawling alanlarında bol bol yazılım geliştirdim vakti zamanında. Şimdi de boş kaldıkça birşeyler yapmaya çalışıyorum. Ancak beni acayip irite eden bir durum var. Doğru düzgün bir otomatik tamamlama asla bulamıyorum. En iyisi ‘kite’ dediler onu da beğenmiyorum. Benim cafcaflı yapay zekalı otomatik tamamlamalara, detaylı açıklamalara ihtiyacım yok. Ben sadece şunu istiyorum (örnek üzerinden anlatacağım):
import pytesseract
dir(pytesseract)
output :
['ALTONotSupported', 'Output', 'TSVNotSupported', 'TesseractError', 'TesseractNotFoundError', '_ _builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', 'get_languages', 'get_tesseract_version', 'image_to_alto_xml', 'image_to_boxes', 'image_to_data', 'image_to_osd', 'image_to_pdf_or_hocr', 'image_to_string', 'pytesseract', 'run_and_get_output']
Görüldüğü gibi ve bildiğim kadarıyla en baştakiler modülün içindeki hata tipleri, _ ile başlayanlar özellikleri ve en son kısımda içinde gömülü fonksiyonlar.
Benim istediğim oto tamamlayıcı sadece bir modülü import ettiysem onun fonksiyonlarını gösterse bana yeter. Vallahi açıklamasında, fazlasında gözüm yok. Diyelim pytesseract modülünün yine kendi isminde olan pytesseract fonksiyonunu yazdım. Yani:
pytesseract.pytesseract
O halde bana
dir(pytesseract.pytesseract)
bunun fonksiyonlarını gösterse yeter.
Derdimi en basit haliyle anlatabilmişimdir umarım. Yıllardır her python ile uğraştığımda bu kadar mükemmel bir dilin nasıl diğer diller gibi gelişmiş bir autocomplate özelliği olmaz aklım almıyor.
Sonuç olarak: Çözüm önerim de şu şekilde; ben şimdi bu konuyu açarken ayak üstü bir program yazdım. kodlar bunlar:
import pytesseract
module_list = []
temp_list = []
dir_of_imported_module = dir(pytesseract)
print(dir_of_imported_module)
for item in dir_of_imported_module:
print(item)
if item.startswith('_'):
temp_list.append(dir_of_imported_module.index(item))
print("temp_list : ",temp_list)
for item in dir_of_imported_module[temp_list[-1]+1:]:
module_list.append(item)
print("module_list : ",module_list)
bu kod ilk for döngüsünde _ ile başlayan dir(modül_adı) içinde _ ile başlayan itemleri buluyor.
ikinci for döngüsünde ilk forda bulduğu son indexten 1 fazlasından başlayıp sonuna kadar tüm elemanlarını alıyor. Yani fonksiyonlarının tamamını almış oluyor çıktı şu şekilde;
module_list : ['get_languages', 'get_tesseract_version', 'image_to_alto_xml', 'image_to_boxes', 'image_to_data', 'image_to_osd', 'image_to_pdf_or_hocr', 'image_to_string', 'pytesseract', 'run_and_get_output']
bu tarz bir program yazıp buna bir arayüz geçirip kullanıcı her modül import ettiğinde onun fonksiyonlarını gösteren bir program yazamaz mıyız? Bu çok mu zor? İlla kite’ye 50$ 100$ hatırlamıyorumda dünyanın parasını mı veriyor herkes? Veya herkes tüm modüllerin fonksiyonlarını kafasında mı tutuyor?
Kullandığım IDE > Atom
Cevap veren arkadaşlara önden teşekkürlerimi ileteyim. Umarım herkese faydalı olur bu konu.