Merhaba, sorum biraz ilginç olacak. Bir fonksiyonla, .py dosyasının içine kod bloğu eklemek istiyorum fakat bunu elle değil bir makroyla yada scriptle yapmak istiyorum. Yani atıyorum;
Python:
def func():
#...fonksiyon işlemleri...
def anotherfunc():
#...fonksiyon işlemleri...
#... diğer fonksiyon, makro/script neyse artık buraya
#def foo():
# ...fonksiyon işlemleri...
#ekleyecek
isteğim bu.
Bunu nasıl sağlarım? Filestream ile eklenecek satır sayısı kadar yeni satır eklemeyi düşündüm ama her seferinde değişeceği için bunu makroya nasıl yedirebilirim bilmiyorum. Bir de filestream kullanarak yaptığım değişiklikler genelde ekleme yapmıyor, ekleme yapsa kolay olacak ama satırı değiştiriyor.
Kayma değil. def func yazıyorsa ve ben satıra ekleme olarak def lol yazarsam def lolc oluyor. Kişisel bir projede çalışıyorum, voice assistant yapıyorum speech-recognition lib ile. Komutları sınıf oluşturup onun içine ekledim, komutların aranması içinde başka bir fonksiyon yaptım. Tkinter ile oluşturduğum bir GUI komut ekleme sayfası var, bunu kullanarak sınıfın içerisine yeni fonksiyonu eklemek istiyorum.
Merhaba, sorum biraz ilginç olacak. Bir fonksiyonla, .py dosyasının içine kod bloğu eklemek istiyorum fakat bunu elle değil bir makroyla yada scriptle yapmak istiyorum. Yani atıyorum;
Python:
def func():
#...fonksiyon işlemleri...
def anotherfunc():
#...fonksiyon işlemleri...
#... diğer fonksiyon, makro/script neyse artık buraya
#def foo():
# ...fonksiyon işlemleri...
#ekleyecek
isteğim bu.
Bunu nasıl sağlarım? Filestream ile eklenecek satır sayısı kadar yeni satır eklemeyi düşündüm ama her seferinde değişeceği için bunu makroya nasıl yedirebilirim bilmiyorum. Bir de filestream kullanarak yaptığım değişiklikler genelde ekleme yapmıyor, ekleme yapsa kolay olacak ama satırı değiştiriyor.
Dosyaya ekleme yapmak istiyorsan önce okuyup buffer üzerinde ekleme yapıp tekrar sıfırdan yazman gerekiyor aksi halde append modda mevcut kayıtlı verinin üzerine yazar.
Dosyaya ekleme yapmak istiyorsan önce okuyup buffer üzerinde ekleme yapıp tekrar sıfırdan yazman gerekiyor aksi halde append modda mevcut kayıtlı verinin üzerine yazar.
Anladım. Peki her birini yeni bir dosyada oluştursam, ardından bir diğer dosyada tüm fonksiyonları toplasam daha mı kolay olur?
Yani demek istediğim, komut.py komut2.py komut3.py, bunların hepsini responseImports.py'a import edip onu da responses.py'a import etsem getResponse fonksiyonun da çağrı yapsam olabilir sanırım.
Yani nasıl kolayına gelecekse öyle yap, satır sonuna ekleme yapmak için append mod yeterli ancak dediğim gibi belirli bir indeksten sonra ekleme yapacaksan buffer üzerinde ekleyip sıfırdan yazmak gerekli. Örn;
s = "\ndef add_function():\n print('message')\n\n"
with open("file.py", "r") as f:
d = f.readlines()
d.insert(4, s)
with open("file.py", "w") as f:
d = "".join(d)
f.write(d)