Düzenli bir ifade değişikliği yaparak, test.tex dosyasının her bir satırını değiştiren aşağıdaki koda sahibim. Python, stdout ve fileinput kullanılarak dosyaya yazılıyor
import re
import fileinput
regex=re.compile(r'^([^&]*)(&)([^&]*)(&)([^&]*)')
for line in fileinput.input('test.tex',inplace=1):
print regex.sub(r'\3\2\1\4\5',line),
tek sorun
Ben sadece ikame dosyasında bazı hatlara uygulamak istediğiniz olmasıdır ve doğru çizgileri seçmek için bir desen tanımlamak için bir yolu yoktur. Bu yüzden, her satırı göstermek ve komut satırında kullanıcıyı sorar ve mevcut satırda değişiklik yapıp yapmamayı sorar. Kullanıcı "y" girerse, ikame yapılır. Kullanıcı hiçbir şey girmezse, yerine yapılır.Sorun şu ki, bu kodu kullanarak, inplace=1
kodunu kullanarak, etkinleştirilmiş dosyaya stdout'u yeniden yönlendirdim. Bu yüzden, dosyaya gönderilmeyen komut satırına çıktıyı (örneğin, ikame yapıp yapmamayı sorma) göstermenin bir yolu yoktur.
Herhangi bir fikrin var mı?
stderr ..... öğesini kullanın. –
'fileinput' bu iş için doğru araç değildir. Sadece standart bir okuma-değiştir-yazma modelini kullan –
@EliBendersky bana bahsettiğin şeyi yapmanın bir örneğini işaret edebilir misin? Üzgünüm, Python'da çok yeniyim. – synaptik