Öncelikle herkese iyi forumlar.
Os.system()
komutu ile konsola ard arda komutlar verebilirmiyiz.
Denediklerim arasında şunlar dahi var:
liste = ["python3","print('hello world')"]
for i in liste:
os.system(i)
Öncelikle herkese iyi forumlar.
Os.system()
komutu ile konsola ard arda komutlar verebilirmiyiz.
Denediklerim arasında şunlar dahi var:
liste = ["python3","print('hello world')"]
for i in liste:
os.system(i)
Pencereli oluşturmadığınız ve path’e eklenmiş tüm python kodları zaten arka arkaya konsola yazdırılarak çalışıyor. Ekstradan bunu yapmamın faydası ne olacak? Tam olarak düşündüğünüz nedir?
Not > Bunu çalıştırmayı denerseniz yüksek ihtimalle PNR hatası alacaksınız
Not > system() içerisine yazılacak kondların “” yada ‘’ arasında olması gerekmektedir. Bu yüzden i değişkeni konsola döndürmeyecektir. .format() fonksiyonunu kullanabilirsiniz ama yine PNR hatası verecektir
Ruby konsolunu açıp içine kod yazmak istiyorum.
os.system("irb")
os.system("require 'tk'")
Tam olarak şöyle işliyor.
Siz bir python kodu çalıştırdığınız zaman konsol ekranında açılıyor.
Ardından konsol ekranına system(“python”) dediğiniz zaman artık o konsol ekranı sizin çalıştırdığınız kod bloğundan çıkıyor.
Aşağıdaki gibi oluyor. Böylelikle çalıştırmak istediğiniz kod bloğundan ayrıldığı için artık kodlarınızı konsol ekranında gerçekleştiremiyor.
os.system
’e bir str
verilmesi lazım, neyi neyin arasına yazdığının bir önemi yok. Yukarıdaki kod da os.system
’i doğru bir şekilde çağırıyor.
konsola gönderdiğimiz ilk değer python olunca konsol, python konsola geçiyor. Bu yüzden artık normal system konsoluna değer gönderemiyoruz.
system’e python’ı çağır dedikten sonra print çalışsın diye bekliyoruz fakat çalışmayacaktır çünkü artık normal system konsolu değil python konsolu oluyor. Python konsoluna da system ile gönderemediğimiz için aşağıdaki gibi python konsolunda kalıyor.
py.exe var konsol ekranında çalışan fakat system cmd.exe ye gönderiyor
cmd.exe den çıkıp py.exe ye geçtiği için system() işlevsizleşiyor
Peki hem ruby açıp hemde içine kod yazmanın bir yolu varmı ?
Yazacağınız kod en baştan belli ise bir dosyaya yazıp dosyayı ruby ile çalıştırmanız daha kolay olur.
@EkremDincel @tevhidulvahset yardımlarınız için teşekkür ederim.
Os
degil os
, komut degil fonksiyon.
Hayir. Cozumu birden fazla os.system
cagrisi yapmak.
Bunun yolu birden fazla komut cagirmak degil. subprocess — Subprocess management — Python 3.12.1 documentation