ප්රශ්නයට පිළිතුර: පයිතන්හි stderr මුද්රණය කිරීමට වෙනස් ක්රම ඇති නමුත් එය 1 මත රඳා පවතී.) අපි භාවිතා කරන්නේ කුමන පයිතන් අනුවාදයද?) අපට අවශ්ය නිශ්චිත ප්රතිදානය.
මුද්රණ සහ ස්ටෙඩර්ගේ ලිවීමේ කාර්යය අතර ඇති වෙනස:
stderr : stderr (සම්මත දෝෂය) යනු සෑම යුනික්ස් / ලිනක්ස් පද්ධතියකටම ගොඩනගා ඇති නලයකි, ඔබේ වැඩසටහන බිඳ වැටී නිදොස් කිරීමේ තොරතුරු මුද්රණය කරන විට (පයිතන්හි ලුහුබැඳීමක් වැනි), එය ස්ටෙඩර් වෙත යයි පයිප්ප.
මුද්රණය කරන්න : print යනු ආදාන ආකෘතිකරණය කරන එතීමකි (ආදානය යනු තර්කය සහ නව රේඛාව අවසානයේ ඇති අවකාශයයි) එවිට එය දී ඇති වස්තුවක ලිවීමේ කාර්යය ලෙස හැඳින්වේ, ලබා දී ඇති වස්තුව පෙරනිමියෙන් sys.stdout වේ, නමුත් අපට හැකිය ගොනුවක් සම්මත කරන්න, එනම් අපට ආදානය ගොනුවක මුද්රණය කළ හැකිය.
පයිතන් 2: අපි පයිතන් 2 භාවිතා කරන්නේ නම්
>>> import sys
>>> print "hi"
hi
>>> print("hi")
hi
>>> print >> sys.stderr.write("hi")
hi
පයිතන් 2 පසුපස කොමාව පරාමිතියක් බවට පත්ව ඇත, එබැවින් මුද්රණයෙන් පසු නව රේඛාව මඟ හැරීම සඳහා අපි පසුපස කොමාව භාවිතා කරන්නේ නම්, මෙය පයිතන් 3 හි මුද්රණය මෙන් පෙනේ ('මුද්රණය කිරීමට පෙළ', අවසානය = '') එය පයිතන් 2 යටතේ ඇති සින්ටැක්ස් දෝෂයකි. .
http://python3porting.com/noconv.html
අපි python3 හි ඉහත sceario එක පරීක්ෂා කළහොත්:
>>> import sys
>>> print("hi")
hi
පයිතන් 2.6 යටතේ මුද්රණය ශ්රිතයක් බවට පත් කිරීම සඳහා අනාගත ආනයනයක් ඇත. එබැවින් සින්ටැක්ස් දෝෂ සහ වෙනත් වෙනස්කම් වලක්වා ගැනීම සඳහා අපි අනාගත ආනයන print_function වෙතින් මුද්රණ () භාවිතා කරන ඕනෑම ගොනුවක් ආරම්භ කළ යුතුය . මෙම අනාගත ආනයන පමණක් Python 2.6 යටතේ ක්රියා කරන අතර පසුව, ඒ නිසා Python 2.5 හා ඉන් පෙර ඔබට විකල්ප දෙකක් ඇත. ඔබට වඩාත් සංකීර්ණ මුද්රණය සරල දෙයකට පරිවර්තනය කළ හැකිය, නැතහොත් ඔබට පයිතන් 2 සහ පයිතන් 3 යටතේ ක්රියාත්මක වන වෙනම මුද්රණ ශ්රිතයක් භාවිතා කළ හැකිය.
>>> from __future__ import print_function
>>>
>>> def printex(*args, **kwargs):
... print(*args, file=sys.stderr, **kwargs)
...
>>> printex("hii")
hii
>>>
නඩුව: සැලකිල්ලට ගත යුතු කරුණ නම් sys.stderr.write () හෝ sys.stdout.write () (stdout (සම්මත ප්රතිදානය) යනු සෑම යුනික්ස් / ලිනක්ස් පද්ධතියක් තුළම ගොඩනගා ඇති නලයකි) මුද්රණය සඳහා ආදේශකයක් නොවන නමුත් ඔව් අපට එය යම් අවස්ථාවක විකල්පයක් ලෙස භාවිතා කළ හැකිය. මුද්රණය යනු ආදාන අවකාශය හා නව රේඛාව සමඟ ඔතා අවසානයේ ලිවීමේ කාර්යය භාවිතා කරයි. Sys.stderr.write () වේගවත් වීමට හේතුව මෙයයි.
සටහන: අපට ලොග් වීම භාවිතා කර නිදොස්කරණය කළ හැකිය
#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