Merhaba,
Elimde desenler, fonksiyonlar ve raporla adında 3 adet python dosyası var.
desenler.py dosyası içerisinde re modülünü kullanarak esleştirmek istediğim desen değişkenlerim var.
foksiyonlar.py dosyası içerisinde yazdır (konsola / ekrana basma) ve kaydet fonksiyonları mevcut.
raporla.py dosyası içerisinde;
- desenler.py dosyasında tanımlı değişken isimlerini bir listede topluyorum.
- Bu değişken (desen) isimlerini fonksiyonlar.py dosyasındaki yazdır ve kaydet fonksiyonlarına parametre olarak vermek istiyorum.
Maalesef istediğimi bir türlü gerçekleştiremedim.
Örnek kodlar aşağıdadır.
Ne yapmam gerekiyor? Nasıl bir yöntem kullanmam gerekir?
Acaba Exceldeki Dolaylı fonksiyonuna benzer bir yöntem mi kullanmalıyım?
desenler.py içeriği; (bu dosya TXT uzantılı da olabilir)
##### Brinell_Sertlik Test Sonucu Deseni ##################################################################################
desen_brinell_sertlik = r"Brinell\s+\d+\.\d+\s+HBW" # Örnek eslesme: "Brinell 195.10 HBW 2,5/187,5 EN ISO 6506-1"
###################################################################################
##### Çekme Deneyi - Kopma Uzaması (A5) Sonucu Deseni #############################################################################
desen_kopma_uzamasi = r"A5\s+\d+\.\d+\s+%\s+EN ISO 6892-1 Metod B" # Örnek eslesme: "A5 7.000 % EN ISO 6892-1 Metod B"
###################################################################################################################################
##### CONTA NUMUNESİ - Kopma Mukavemeti Sonucu Deseni ########################################################################################
desen_conta_kopma_mukavemeti = r"\*\w+\s+\w+\s+\d+\.\d+\s+N/mm\^2 TS ISO 37" # Örnek eslesme: "*Kopma Mukavemeti 12.00 N/mm^2 TS ISO 37"
###############################################################################################################################################
fonksiyonlar.py dosya içeriği;
import re
##### "pdf_verisi.txt" isimli dosya içeriğini oku, desen ile eşleşen değerleri Konsola yazdır. ####
def yazdir(desen):
with open("pdf_verisi.txt", "r", encoding="utf8") as dosya:
icerik = dosya.read()
eslesme = re.findall(desen, icerik)
for deger in eslesme:
print(deger) # esleşen değerleri alt alta yazdır, ekrana bas.
####################################################################################################
##### "pdf_verisi.txt" isimli dosya içeriğini oku, desen ile eşleşen değerleri "Rapor_Degerleri.txt" isimli dosyaya ekle / kaydet. ####
def kaydet(desen):
with open("pdf_verisi.txt", "r", encoding="utf8") as dosya:
icerik = dosya.read()
eslesme = re.findall(desen, icerik)
with open("Rapor_Degerleri.txt", "a", encoding="utf8") as kaydet:
for deger in eslesme:
kaydet.write(deger.replace(".", ",") + "\n") # "." nokta karakterini "," virgül ile değiştir, sonra kaydet.
########################################################################################################################################
raporla.py dosya içeriği;
import PDF_to_TXT # "veriyi_kaydet()" fonksiyonunu sadece bir kez çalıştırıp PDF Dosya içeriğini "pdf_verisi.txt" adıyla kaydetmek için kullanacağız.
import re, fonksiyonlar
##### PDF_to_TXT.py dosyasındaki "veriyi_kaydet()" fonksiyonunu çalıştır ###
# PDF_to_TXT.veriyi_kaydet() # 1 kez çalıştırılmalı
############################################################################
##### Desen İsimlerini Guncelleyen Fonksiyon ###################
desen_listesi = []
pattern = r'\w+\s+=\s+r"'
def desen_listesini_guncelle():
with open("desenler.py", "r", encoding="utf8") as dosya:
icerik = dosya.read()
eslesme = re.findall(pattern, icerik)
for desen_adi in eslesme:
desen_listesi.append(desen_adi[:-5])
desen_listesini_guncelle()
### Desen isimlerini ekrana yazdır, kontrol et.
for i in desen_listesi:
print(i)
###############################################################
#### Fonksiyonları sırayla çalıştır ############
for desen_adi in desen_listesi:
fonksiyonlar.yazdir(desen_adi)
#fonksiyonlar.yazdir(desenler.desen_adi) # bu kod da hata veriyor ki, normal :)
################################################