Biraz sıra dışı bir durumla karşılaştım. Ben senaryoya (öğretme/test amaçlı) interaktif konsolu çalışıyorum ve aşağıdaki çalıştı:Python'un interaktif istemi ">>>" çıktı?
$ python > /dev/null
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print 3
>>>
3
baskılı değildir, bu yüzden açıkça her şey stderr
oldu. Çok uzak çok iyi. Ama sonra stderr
yönlendirmek:
$ python 2> /dev/null
>>> print 3
3
>>>
nasıl istemi her iki durumda da basılabilir?
DÜZENLEME: Hem stdout
hem de stderr
öğelerini yeniden yönlendirmek, yazdırılacak hiçbir şey yapılmamasına neden olur. Yani Python açıkça stdout
veya stderr
'dan birini seçerek "seçiyor". Bu belgelenecek mi? Bunun aslında Python kaynak kodunda nasıl yapıldığını anlayamadım.
Huh, bu garip. Belki de isatty'yi kontrol eder? – delnan
Bu benim tahminim olurdu, ama Python'un aslında bunu nerede yaptığını anlayamıyorum. En garip olan şey, PyOS_StdioReadline'ın, okuma girişinden sorumlu gibi görünen fonksiyonun, 'stderr' komutunu yazdırmak için kodlanmış olmasıdır. Stderr 'stdout' öğesine yönlendirildiyse, ikinci örnekte de belirtildiği gibi, banner'ı görmeliyiz. – nneonneo
[Ipython'un dizüstü bilgisayar özelliği] (http://ipython.org/notebook.html) gibi, Python öğretmek için tasarlanmış bir araç kullanmak daha kolay olabilir. –