私はPythonにかなり慣れていないので、まだ言語を学んでいます。私が遭遇したことの 1 つは、sys.stdout を再割り当てして、print のデフォルト出力を変更することでした。だから私はこれをテストとして書いた:
import sys
sys.stdout = open('log.txt','a')
print('hey')
sys.stdout.close()
sys.stdout = sys.__stdout__
print('hi')
「Hey」はファイルに書き込まれますが、「hi」はどこにも表示されません。ただし、これは期待どおりに機能し、「hey」がファイルに書き込まれ、「hi」がコンソール出力に出力されます。
import sys
sys.__stdout__ = sys.stdout
sys.stdout = open(r'C:\Users\Vincent\Documents\Python\log.txt','a')
print('hey')
sys.stdout.close()
sys.stdout = sys.__stdout__
print('hi')
要するに、それはあまり重要ではない小さな問題です。私は、それが本来の方法で機能しない明確な理由があるかどうか疑問に思っています。v3.2.3 の IDLE と pyscripter および私のポータブル python v3.2.1 を使用して、Windows 7 Home Premium でこれを試しました。