Jawaban atas pertanyaannya adalah: Ada cara berbeda untuk mencetak stderr dengan python tetapi itu tergantung pada 1.) versi python yang kita gunakan 2.) apa output yang kita inginkan.
Perbedaan antara fungsi tulis cetak dan stderr:
stderr : stderr (standard error) adalah pipa yang dibangun ke dalam setiap sistem UNIX / Linux, ketika program Anda crash dan mencetak informasi debugging (seperti traceback dengan Python), ia pergi ke stderr pipa.
print : print adalah pembungkus yang memformat input (input adalah ruang antara argumen dan baris baru di akhir) dan kemudian memanggil fungsi tulis dari objek yang diberikan, objek yang diberikan secara default adalah sys.stdout, tapi kita bisa lewat file yaitu kita dapat mencetak input dalam file juga.
Python2: Jika kita menggunakan python2 maka
>>> import sys
>>> print "hi"
hi
>>> print("hi")
hi
>>> print >> sys.stderr.write("hi")
hi
Python2 trailing comma telah di Python3 menjadi parameter, jadi jika kita menggunakan trailing koma untuk menghindari baris baru setelah cetak, ini akan di Python3 terlihat seperti cetak ('Text to print', end = '') yang merupakan kesalahan sintaksis di bawah Python2 .
http://python3porting.com/noconv.html
Jika kita periksa sceario di atas yang sama di python3:
>>> import sys
>>> print("hi")
hi
Di bawah Python 2.6 ada impor di masa depan untuk membuat cetak menjadi fungsi. Jadi untuk menghindari kesalahan sintaks dan perbedaan lain, kita harus memulai file mana pun yang menggunakan print () dengan dari impor print_function di masa depan . The masa depan impor hanya bekerja di bawah Python 2.6 dan kemudian, jadi untuk Python 2.5 dan sebelumnya Anda memiliki dua pilihan. Anda dapat mengonversi cetakan yang lebih kompleks menjadi sesuatu yang lebih sederhana, atau Anda dapat menggunakan fungsi cetak terpisah yang berfungsi di bawah Python2 dan Python3.
>>> from __future__ import print_function
>>>
>>> def printex(*args, **kwargs):
... print(*args, file=sys.stderr, **kwargs)
...
>>> printex("hii")
hii
>>>
Kasus: Poin yang perlu dicatat bahwa sys.stderr.write () atau sys.stdout.write () (stdout (output standar) adalah pipa yang dibangun di setiap sistem UNIX / Linux) bukan pengganti untuk cetak, tapi ya kita dapat menggunakannya sebagai alternatif dalam beberapa kasus. Print adalah pembungkus yang membungkus input dengan spasi dan baris baru di bagian akhir dan menggunakan fungsi tulis untuk menulis. Ini adalah alasan sys.stderr.write () lebih cepat.
Catatan: kami juga dapat melacak dan menyangkal menggunakan Logging
#test.py
import logging
logging.info('This is the existing protocol.')
FORMAT = "%(asctime)-15s %(clientip)s %(user)-8s %(message)s"
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logging.warning("Protocol problem: %s", "connection reset", extra=d)
https://docs.python.org/2/library/logging.html#logger-objects