Raporlama, herhangi bir işletmenin temelidir. Günlük hayatta, bir sonraki gün nereye gideceğinize karar vermek için bir rapordaki yeni verileri almanız gerekir. Rapor, Microsoft Excel, Web uygulaması veya bir kurumsal kaynak planlama sisteminden (ERP) dışa aktarma gibi çeşitli biçimlerde gelebilir.
Kısa süre önce hazırlanmış rapordaki işletme numarasını kopyalayan bir gösterge tablosu oluşturma isteği aldım. Finans ekibi bu raporu aylık olarak manuel olarak oluşturdu. En sıkıcı süreç, kaynak dosyaları SAP sisteminden dışa aktarmak ve manuel olarak excel'e yerleştirmektir. Bundan sonra, bazı sayıları ayarlamaları gerekir çünkü bu, kullanıcı tanımlı formülün hesaplayamayacağı uç bir durumdur.
Bence SAP tablosundan kaynak tablo ile aynı mantıkla başlarsak birçok manuel görev yapmadan raporu türetebiliriz. İlk seferinde böyle düşünmüştüm.
Bu sayıları kopyalamak kolay bir iş olacaktır. Mantık oldukça basit görünüyor. Ancak ayrıntıların derinliklerine indiğimde, tüm bu sayıların zaman içinde birçok temel SAP iş kuralıyla işlendiğini öğrendim. Ayrıca, iş kuralları o kadar dinamiktir ki, tüm süreci tam olarak anlamayan biri için bunu kopyalamak zordur.
Bir süre deneme yanılma yaptıktan sonra kopyalama sürecine devam etmemeye karar verdim. Her şeyi anlamam ve SAP ABAP dilini çalışabileceğim başka bir dile çevirmem bir aydan fazla sürerdi. Bazen bir şeyin olduğu gibi kalmasına izin vermemiz gerekir. Gelecekte bunu yapmanın harika bir yolu olacağını düşünseniz bile ona dokunmayın.
İşte bugünün ana konusuna geliyoruz. Kaynak verileri alıp sayıyı kendim hesaplamak yerine, tüm bu süreci atladım ve bunun yerine son raporlama sonucunu besledim. Nasıl yapabilirim? Cevap bir
pyautoguimodül ile. Bu Github'da bulabilirsiniz .
Kısacası,
pyautoguifarenizi hareket ettirmek, düğmeyi tıklamak, bazı kelimeleri yazmak gibi temel otomatikleştirme görevlerini yerine getirmenize yardımcı olur. Farenin hareket etmesini istediğiniz piksele referans vererek masaüstünde istediğinizi yapabilirsiniz. Ayrıca, sağlanan resme bağlı olarak ekranınızdaki konumu tanıma için bilgisayarla görme yeteneğini ekler. Bu harika.
Bugün, bu kitaplıkta size rehberlik edeceğim ve masaüstünüzdeki herhangi bir şeyi otomatikleştirmenize yardımcı olacak başka yararlı işlevler ekleyeceğim. Bugün, ne
pyautoguiyapabileceğine dair bir eğitim yazmayacağım çünkü bunu yine de belgelerde bulabilirsiniz. Size süreci ve bu şeyi nereye uygulayabileceğinizi göstereceğim.
import subprocess sap_gui = subprocess.Popen("path/to/saplogon.exe")
sap_gui.terminate()
Kullanırken dikkat edilmesi gereken bir
pyautoguinokta, masaüstü bilgisayarın doğru şekilde işlenmemesidir. Demek istediğim, diyelim ki ekranda bir seçenek seçiyorsunuz ve program bunu işlemesi biraz zaman alıyor. Komut dosyasına herhangi bir bekleme süresi koymazsanız, sonraki tüm adımlar yanlış gidebilir.
Yukarıdaki örneği daha iyi hale getirmek için.
import pyautogui import subprocess import time sap_gui = subprocess.Popen("path/to/saplogon.exe") # wait 3 seconds for the program to load time.sleep(3) # assume that we move to input username fields username_field_location = pyautogui.locateOnScreen('username_field.png') pyautogui.moveTo(username_field_location) pyautogui.click() # type the username in the field that we just clicked pyautogui.typewrite(username) # move (relative from the current cursor position) to below 50 pixel pyautogui.moveRel(0, 50) pyautogui.click() # type the password pyautogui.typewrite(password) pyautogui.press('enter')
Bu noktada, rapor için ihtiyacınız olan tüm parametreleri koyacak ve daha sonra çalıştıracaksınız. Bu görevi gerçekleştirmek için yukarıdaki tüm fonksiyonları kullanabiliriz. Sadece daha önce bahsetmediğim işlevi göstermeme izin verin.
# Other functions that I used to assign the value to get the report # double click pyautogui.doubleClick() # right click pyautogui.click(button='right') # hot key with ctrl + f9 (shortcut for SAP command) pyautogui.hotkey('ctrl', 'f9') # press tab to shift to the next input field pyautogui.press('tab')
İşte burada başka bir kullanışlı işlev devreye giriyor. İşlemin (MS Excel) çalışıp çalışmadığını kontrol edebiliriz. Daha sonra, onları bir sonraki adıma geçmek için tetik noktası olarak kullanabiliriz. SAP sistemi excel'i doğru bir şekilde kaydedebilirse, excel sonuç dosyasını tereddüt etmeden kapatabiliriz. Bunu yapmak için aşağıdaki işlevi kullanacağız.
import os def process_exists(process_name): # Thanks to ewerybody for providing this useful snippet code https://stackoverflow.com/questions/7787120/check-if-a-process-is-running-or-not-on-windows-with-python # This function will return true if the process is running. It's compatible only in MS Window. try: call = 'TASKLIST', '/FI', 'imagename eq %s' % process_name # use buildin check_output right away output = subprocess.check_output(call).decode() # check in last line for process name last_line = output.strip().split('\r\n')[-1] # because Fail message could be translated return last_line.lower().startswith(process_name.lower()) except Exception as e: print(e) def close_process(process_name): # This function will return true if the process is running. It's compatible only in MS Window. try: os.system('TASKKILL /F /IM {}'.format(process_name)) except Exception as e: print(e)
# Let's wait untill the program is exists and close it. retry = 0 while not is_process_exists('path/to/excel.exe'): time.sleep(10) # may be we need more time for saving retry += 1 if retry > threshold: raise ValueError("Excel cannot be saved") close_process('path/to/excel.exe')
local_file = path/to/export.xlsx target_dir = path/to/{load_date} file_name = {business_key_parameter}.xlsx absolute_file_name = os.path.join(target_dir, file_name) if os.path.exist(target_dir): # if the target dir doesn't exist, create one. os.mkdir(target_dir) if os.path.isfile(absolute_file_name): # if there is a file in the target folder, replace with new one. os.remove(absolute_file_name) # rename and move export file to the target dir os.rename(local_file, absolute_file_name)
pyautogui
pyautoguiModülün bir dezavantajı, önceki komutun çıktısının beklendiği gibi sonuçlanmaması (web sayfası yüklenmemesi), bu hatanın sonraki tüm adımlarda büyük ölçüde başarısız olmasıdır. Bu sorunu çözmek için aklıma gelen 2 seçenek var
pyautoguiaşamanın güvenilir bir referansını bulmak için . Bu güvenilir referans yoksa, yüklenene kadar bekleyeceğiz.
whileDöngüyü tekrar denemeden kullanırsanız, lütfen bunun sizi sonsuz bir döngüye götürebileceğine dikkat edin .
import logging from botocore.config import Config # Intial S3 client s3_config = Config(region_name = <<YOUR AWS REGION NAME>>) s3_client = boto3.client( "s3", config=s3_config, aws_access_key_id = config["CREDENTIALS"]["AWS_ACCESS_ID"], aws_secret_access_key = config["CREDENTIALS"]["AWS_SECRET_KEY"] ) try: response = s3_client.upload_file( file_name, bucket, object_name ) except Exception as e: print(e)
Bugün birkaç yararlı kütüphaneden geçtik. Gördüğünüz gibi tüm sıkıcı görevleri python ile otomatik olarak yapabiliyoruz.
Bu görev için eylem kodunu yazmak için yaklaşık yarım gün harcadım. Ama kurtarabileceğim zaman daha da fazla.
Günde bir kez 1 saatlik bir ekstraksiyon periyodu ile dışa aktarmanız gerektiğini düşünerek ve her gün aynı parametreyi yazarak. Dünyadaki en sıkıcı görev olurdu. Şimdi tüm bunlarla ilgilenen bir senaryom var.
İlk başta, işleri otomatikleştirmenin bir maliyeti olacağını düşündüm. İnternette bazı zarif RPA uygulamaları gördüm. Bu başvuruları almak için para harcamak zorunda kalırsam, POC ve satın alma süreçleri çok zaman alacaktır. İle
pyautoguiher şeyi bir gün içinde yerel olarak yapabiliriz.
Ancak, daha önce de bahsettiğim gibi, uç durumla kendiniz ilgilenmelisiniz. Basit bir uygulama ise, onu kendiniz otomatikleştirmeyi denemenizi tavsiye ederim. Ancak karmaşık süreç için tamamlanmış zarif RPA uygulamasını edinmeyi seçebilirsiniz. Daha iyi bir seçenek olabilir.
Sıkıcı görevler konusunda verimsiz kalmanıza izin vermeyin. Otomatikleştirelim!
Bu makaleyi beğendiyseniz ve bunun gibi bir şeyi daha çok görmek istiyorsanız.
Motivasyon Bir veri bilimcisi olarak hem Panda'lara hem de SQL'e aşina olabilirsiniz. Ancak, Python yerine SQL'de yapmakta kendinizi rahat hissettiğiniz bazı sorgular, dönüşümler olabilir.
Geçenlerde bir meslektaşım, verileri temizlemek ve hazırlamak için günlük iş akışımda komut dosyası dillerini nasıl kullandığımı sordu. Ekibine komut dosyası dillerini benimsemenin ekibine nasıl fayda sağlayabileceğini göstermek ve şu anda Excel'de gerçekleştirilen bazı görevleri otomatikleştirmelerine yardımcı olmakla ilgilendi.
Sathya Krishnan Suresh, Shunmupapriya P Bu yazıda, stili ve içeriği iki ayrı görüntüden gelen yeni görüntüler oluşturmak için kullanılabilecek bir yöntem olan “Nöral Stil Transferi” adlı ilginç bir konuyu tartışacağız. Bu makale Leon A Gatys ve arkadaşlarının A Neural Algorithm of Artistic Style (Sanatsal Stilin Sinirsel Algoritması) temel alınarak hazırlanmıştır; burada yazar, Evrişimsel Sinir Ağı (CNN) katmanlarını kullanarak yeni bir görüntünün oluşturulması hakkında ayrıntılı bir açıklama sunar.
Bu gönderi, DFINITY ekibinin merkezi olmayan bulut vizyonunu ve bunun geleneksel blok zinciri ve Amazon Web Servisleri gibi mevcut bulut sağlayıcılarıyla ilişkisini araştırıyor. Büyük ölçekli bir ağ tarafından uygulanan DFINITY teknolojisinin gösterimleri 2017 sonbaharında yapılacak ve bunu, 2018 yazının başlarında piyasaya sürülmesi beklenen “açık bulut” ağıyla kâr amacı gütmeyen vakıf için bir Ana bağış toplama izleyecektir. .
Mars, Uranüs ve Kuzey Düğümü, 1 Ağustos 2022'de 18 derecede Boğa burcunda kavuşuyor. Yataklarımız yanarken nasıl uyuruz?-Gece yarısı yağı Yılın en önemli astrolojik yönlerinden biri olan Mars ve Uranüs'ün kaderin Kuzey Düğümü ile kavuşumu, gerçek bir aciliyet hissinin eşlik ettiği büyük bir uyandırma çağrısıdır.
Bu blogda, İngilizce'ye yaklaşımımı nasıl ve neden değiştirmeye karar verdiğimi ve yaptığım bazı etkinliklerden para kazanarak bir yıldan kısa bir sürede fakir bir B1'den başlayarak B2 seviyesine nasıl geldiğimi tartışacağım. İçindekiler Okulda örnek bir öğrenci olmasam da İngilizce öğrenmek her zaman kültürel geçmişime eklemek istediğim bir şeydi.