Neden Eşyalarımızı Otomatikleştiriyoruz?
Eşyalarımızın otomasyonu hayatımızı kolaylaştırabilir. Birçok avantajı vardır ancak otomasyonun bazı önemli avantajları aşağıda verilmiştir
- Otomasyonun ilk ve en önemli avantajı zamandan tasarruf sağlamasıdır.
- İşimizin verimliliğini artırabiliriz (i.e. daha az zamanda daha fazla iş)
- Planlanan görevlerin doğruluğu artırılabilir.
- Öğeleri otomatikleştirerek, sistemle insan etkileşimi azalır, böylece sıkıcı şeyler otomatikleştirilir.
Python ile Otomasyon
Bash, perl vb. gibi birçok betik dili vardır. manuel süreçleri otomatikleştirmek için, ancak python ihtiyaçlarımızı karşılamak için uygun bir ortam sağlıyor. Python programlama dilini kullanarak bir şeyleri otomatikleştirmek diğer dillerden daha kolaydır. Python'un birçok otomasyon modülü vardır (i.e. alt işlem, şutil, işletim sistemi, pyautogui, selenyum vb.) otomasyonda kullanılabilen. Eşyalarımızı nasıl otomatikleştirdiğimize dair bazı kullanım örnekleri göreceğiz.
Python'da Otomasyon Modülleri
Burada python benzeri bazı otomasyon modüllerini tartışacağız İşletim Sistemi, ALT İŞLEM, SHUTIL, DATETIME, SELENIUM vb. Bu modüller sistem komutlarını yürütmek için kullanılır ve sistem dizinlerini değiştirmek için de kullanılabilir. Bu modüller, sistemde görevleri gerçekleştirmeyi kolaylaştıran yerleşik işlevlere sahiptir.
işletim sistemi ve ALT İŞLEM modüller hemen hemen aynı amaç için kullanılır. Bu modüllerin yerleşik işlevlerinden bazıları aşağıda verilmiştir
- chdir() \\ Dizini değiştirmek için
- mkdir() \\ Yeni dizin oluşturmak için
- rename() \\ Bir dosyayı yeniden adlandırmak için
- listdir() \\ Tüm dosya ve dizinleri listelemek için
- getcwd() \\ Mevcut dizinimizi bilmek için
- system() \\ Sistem komutlarını çalıştırmak için
- call() \\ Sistem komutlarını çalıştırmak için
benzer şekilde ŞÜTİL modül, sistemle etkileşime izin veren birçok fonksiyona sahiptir. Bu modülün bazı işlevleri aşağıda verilmiştir
- move() \\ Bir dosyayı taşımak için
- copy() \\ Bir dosyayı kopyalamak için
- rmtree() \\ Dizin ve alt dizinlerdeki tüm dosyaları kaldırmak için
DATETIME modül geçerli tarih ve saati bulmak için kullanılır. Ayrıca haftanın gününü ve diğer birçok şeyi bulmak için kullanılır. Bu modülü kullanarak görevimizi istediğimiz zaman ve tarihte planlayabiliriz. Aşağıdaki kullanım durumlarında, yalnızca geçerli tarih ve saati bulmak için kullanacağız.
- tarih saat.bugün() \\ Geçerli tarihi bulmak ve Zaman
SELENYUM Modül, web sitemize giriş sürecini otomatikleştirmek için kullanılır. Web sitemize otomatik olarak giriş yapabilir ve kullanarak güncelleyebiliriz SELENYUM modül. SELENYUM tarayıcılarla ilgili farklı görevleri gerçekleştirmek için kullanılan birçok yerleşik işleve sahiptir.
Python'da Sistem komutları nasıl çalıştırılır
Python'da sistem komutlarını kullanarak çalıştırabiliriz işletim sistemi ve ALT İŞLEM modüller. Python'da sistem komutunu çalıştırmak için sözdizimi aşağıdadır
işletim sistemi.sistem('komut')VEYA
alt süreç.çağrı('komut')Örneğin, geçerli dizindeki tüm dosya ve dizinleri listelemek istiyorsak, python betiğinde aşağıdaki komutu çalıştıracağız
işletim sistemi.sistem('ls')VEYA
alt süreç.çağrı('ls')Python ile Malzeme Nasıl Otomatikleştirilir
Python, zaman kazandıran birçok günlük görevi otomatikleştirmek için kullanılabilir. Burada, eşyalarımızı otomatikleştirmenin bazı kullanım durumlarını göreceğiz. İndirme dizinindeki dosyaların düzenlenmesini ve önemli dosyalarımızın yedeğini tutmayı tartışacağız.
İndirme Dizinindeki Dosyaları Düzenleme
Herhangi bir dosya türünü indirdiğimizde, varsayılan olarak İndirme dizinine gider. Herhangi bir dosya bulmamız gerektiğinde, İndirme dizininde karışık birçok dosya türü olduğu için soruna neden olabilir. Şimdi sistemi farklı dosya türlerinin (e.g. mp3, png, xls vb) farklı dizinlere girer. Tam kod aşağıda verilmiştir. Bu kod, her dosya türünü tek tek kontrol edecek ve ardından ilgili dizini oluşturacaktır. Bundan sonra dosyayı ilgili dizinlere taşıyacaktır (e.g… mp3 dosyası 'Audio' dizinine gidecek).
işletim sistemini içe aktarşutil ithal etmek
tarih saatini içe aktar
1 iken:
#geçerli saat, dakika ve saniyenin hesaplanması
bugün = tarihsaat.tarih saat.bugün()
bugün = str(bugün)
current_hour = bugün[11:13]
akım_dakika = bugün[14:16]
current_sec = bugün[17:19]
# sistemin dosyaları saat 08:00'de düzenleyeceğinden emin olmak
current_hour == '08' ve current_minute == '00' ve current_sec == '00' ise:
# indirilecek dizini değiştirme
işletim sistemi.chdir("path_to_Download_directory")
# tüm dosya adlarını bir listeye kaydetme
dosyalar = işletim sistemi.listdir(os.getcwd())
dosyalarda dosya adı için:
# dizinleri yoksayma
işletim sistemi değilse.yol.isdir(dosya adı):
# mp3 dosyalarını seçme
Eğer '.mp3' dosya adında:
# yoksa 'Ses' dizini oluşturma
işletim sistemi değilse.yol.var ('Ses'):
işletim sistemi.mkdir('Ses')
# 'Ses' dizinindeki hareketli dosya
şutil.move(dosya adı, 'Ses')
# mp4 dosyalarını seçme
elif'.mp4' dosya adında:
# yoksa 'Video' dizini oluşturma
işletim sistemi değilse.yol.var('Video'):
işletim sistemi.mkdir('Video')
# 'Video' dizinindeki hareketli dosya
şutil.move(dosya adı, 'Video')
# pdf dosyalarını seçme
elif'.pdf' dosya adında:
# yoksa 'PDF' dizini oluşturma
işletim sistemi değilse.yol.var('PDF'):
işletim sistemi.mkdir('PDF')
# PDF dizininde dosya taşıma
şutil.taşı(dosya adı, 'PDF')
# jpg ve png dosyalarını seçme
elif'.jpg' dosya adında veya '.png' dosya adında:
# yoksa 'Resimler' dizini oluşturma
işletim sistemi değilse.yol.var('Resimler'):
işletim sistemi.mkdir('Resimler')
# 'Resimler' dizinindeki hareketli dosya
şutil.move(dosya adı, 'Resimler')
# excel dosyalarını seçme
elif'.xls' dosya adında:
# yoksa 'Excel' dizini oluşturma
işletim sistemi değilse.yol.var('Excel'):
işletim sistemi.mkdir('Excel')
# 'Excel' dizininde dosya taşıma
şutil.taşı(dosya adı, 'Excel')
# 'seçme.ppt' dosyaları
elif'.ppt' dosya adında:
# yoksa 'Power Point' dizini oluşturma
işletim sistemi değilse.yol.var('Güç Noktası'):
işletim sistemi.mkdir('Güç Noktası')
# 'Power Point' dizinindeki hareketli dosya
şutil.move(dosya adı, 'Power Point')
# 'seçme.dokümanlar dosyaları
elif'.docx' dosya adında:
# yoksa 'Word Dosyası' dizini oluşturma
işletim sistemi değilse.yol.var ('Kelime Dosyası'):
işletim sistemi.mkdir('Kelime Dosyası')
# 'Word File' dizininde dosya taşıma
şutil.move(dosya adı, 'Kelime Dosyası')
Öncelikle şimdiki zamanı farklı değişkenlere kaydedeceğiz, ardından saatin tam olarak '08:00' olup olmadığını kontrol edeceğiz. Program her gün saati kontrol edecek ve eğer saat '08:00' ise kodu çalıştıracak, ardından ana kod çalışacaktır. Ana kodda, Öncelikle dizinimizi İndirme dizini olarak değiştiriyoruz. Burada tüm dosya adlarını dosyalar adlı bir listeye kaydedeceğiz. Şimdi tüm dosyaları tek tek okuyacağız ve sadece dosyaları filtreleyeceğiz. Yalnızca dosyaları düzenleyeceğimiz için dizinleri görmezden geleceğiz.
Şimdi her dosya türünün mp3, mp4, jpg, pdf, xls, ppt ve docx olup olmadığını kontrol edeceğiz. Her dosya türünü kontrol ettikten sonra, ilgili dizinin var olup olmadığını kontrol edeceğiz. Örneğin, dosya mp3 ise, 'Audio' dizininin var olup olmadığını kontrol edeceğiz. İlgili dizin mevcut değilse, dizini oluşturacağız. Dizin oluşturduktan sonra dosyamızı o dizine taşıyacağız. Bu şekilde tüm dosyalar ilgili dizinlere taşınabilir.
Bu kod sürekli çalışacak ve saatin '08:00' olup olmadığını kontrol etmeye devam edecektir. Her gün '08:00'de dosyalar otomatik olarak düzenlenecektir. Bu kod, sisteminizi crontab kullanarak her başlattığınızda çalışacak şekilde programlanabilir. Crontab aşağıda açıklanmıştır.
Sistem komutlarını kullanarak dosyalarınızı otomatik olarak yedekleyin
Projenizle ilgili bir dizinde bazı önemli dosyalarınız var ve bir şekilde bazı dosyalar siliniyor. Sonra ne yapacaksın? Bu tür bir durumda, dosyalarınızın yedeğini oluşturmak önemlidir. Ancak dosyalarınızın yedeğini oluşturmak gerçekten sıkıcı ve zaman alıcı bir iş. Bu görev, bir python betiği yazılarak otomatik olarak yapılabilir. Bu görevi gerçekleştirmek için kod aşağıdadır. Bu kod, her dosyayı zip dosyasına dönüştürecek, ardından yoksa bir yedekleme dizini oluşturacaktır. Bundan sonra, zip dosyası yedekleme dizinine taşınacaktır.
işletim sistemini içe aktartarih saatini içe aktar
1 iken:
# şimdiki zamanı kaydetme
bugün = tarihsaat.tarih saat.bugün()
bugün= str(bugün)
current_hour = bugün[11:13]
akım_dakika = bugün[14:16]
current_sec = bugün[17:19]
# kodun tam olarak '08:00'de çalışacağından emin olmak
current_hour == '08' ve current_minute == '00' ve current_sec == '00' ise:
# dizini belgelere değiştirme
işletim sistemi.chdir('path_to_documents_directory')
# tüm dosya adlarını bir listeye kaydetme
dosyalar = işletim sistemi.listdir(os.getcwd())
# yoksa 'yedek' dizini oluşturma
işletim sistemi değilse.yol.var('yedekleme'):
işletim sistemi.mkdir('yedekleme')
dosyalarda dosya için:
# dizinleri yoksayma
işletim sistemi değilse.yol.isdir(dosya):
# boşluksuz bir dosya adı tanımlama
orijinal_adı = dosya
dosya = dosya.Bölünmüş(" ")
dosya_adı = "".katılmak(dosya)
# zip_filename tanımlama
zip_file_name = dosya_adı+".fermuar"
# dosyanın zaten yedekleme dizininde olup olmadığını kontrol etme
işletim sistemi değilse.yol.var('backup/'+zip_file_name):
# boşluksuz dosya adını değiştirme
işletim sistemi.yeniden adlandır(orijinal_adı, dosya_adı)
# sistem komutunu kullanarak zip dosyası oluşturma
işletim sistemi.system("zip "+zip_dosya_adı+" "+dosya_adı)
#sistem komutunu kullanarak zip dosyasını yedekleme dizinine taşıma
işletim sistemi.system("mv "+zip_file_name+" yedekleme")
# dosya adını orijinal adıyla değiştirme
işletim sistemi.yeniden adlandır(dosya_adı, orijinal_adı)
Öncelikle mevcut zamanı değişkenlere kaydedeceğiz ve ardından saatin '08:00' olup olmadığını kontrol edeceğiz. Zaman tam olarak '08:00' ise, ana komut dosyası çalışacaktır. Ana kodda öncelikle önemli dosyaların bulunduğu dizine gidiyoruz. Sonra tüm dosya adlarını bir listeye kaydederiz. Şimdi tüm zip dosyalarını kaydedeceğimiz bir 'yedekleme' dizini oluşturacağız. Bu dizin zaten mevcutsa, bunu görmezden geleceğiz. Şimdi her dosyayı okuyacağız ve bunların dosya olup olmadığını kontrol edeceğiz. Dizinler yok sayılacak ve dosyalar dikkate alınacaktır.
system komutunu kullanarak bir dosyanın zip dosyasını oluşturmak için öncelikle bu dosyayı boşluksuz olarak yeniden adlandıracağız, çünkü boşluklu bir dosya adı python betiği kullanılarak bir sistem komutu çalıştırıldığında her boşlukta farklı bir dosya olarak kabul edilir. Dosyanın adı 'orijinal_dosyaadı' değişkenine kaydedilir ve dosya boşluksuz olarak yeniden adlandırılır. Şimdi zip dosya adını dosyanın adıyla aynı şekilde ' uzantılı olarak tanımlayacağız.fermuar.
Bundan sonra, bu dosyayı sıkıştırmak için 'zip' sistem komutunu kullanacağız ve ardından bu zip dosyasını 'mv' sistem komutunu kullanarak 'yedekleme' dizinine taşıyacağız. Ardından, içinde boşluklar bulunan dosyayı orijinal adıyla yeniden adlandıracağız. Bu kod, sisteminizi crontab kullanarak başlattığınızda her seferinde otomatik olarak çalışacak şekilde programlanacaktır.
Crontab kullanarak bir komut dosyasını çalıştırmayı otomatikleştirin
Otomasyon scriptlerini yukarıda yazdık. Şimdi, sistemimiz yeniden başlatıldığında bu komut dosyalarını otomatik olarak çalıştırmak istiyoruz. Bunu yapmak için komut dosyamızı crontab'a ekliyoruz. Crontab'da görev eklemek için aşağıdaki adımları izleyin
Her şeyden önce, crontab dosyasını düzenlemek için aşağıdaki komutu yazın
ubuntu@ubuntu:~$ crontab -e-e flag, crontab'ı düzenleme modunda açmak anlamına gelir. Şimdi crontab dosyasını açtıktan sonra, dosyanın sonunda aşağıdaki komutu kullanarak görevimizi bu dosyaya ekleyeceğiz
@reboot python /path/to/python/scriptBu, sisteminizi her başlattığınızda python betiğini otomatik olarak çalıştıracaktır.
Sonuç
Bu yazıda otomasyonun pratik hayattaki önemi anlatılmıştır. Bu makaleyi okuyarak, her gün yaptığınız basit görevlerinizi nasıl otomatikleştirebileceğiniz hakkında bir fikir edinirsiniz. Daha iyi ve kolay otomasyon için kesinlikle daha fazla python kütüphanesi ve işlevi aramalısınız.