私はインタプリタの起動時に表示されるMOTDタイプのメッセージを持っています。現在のところ、これはsitecustomizeでプリントされています。インタプリタがインタラクティブモードでない場合、メッセージを抑制したいと思います。残念ながら、 Tell if Python is in interactive modeのすべてのチェックはsitecustomizeでは機能しません。 (sys.argv
、sys.ps1
、__main__.__file__
は入力されていません)。sitecustomizeで動作するチェックはありますか?sitecustomizeでpythonの対話モードを確認してください
答えて
おそらくこのアイデアinspect
モジュールを利用し、チェックがフレームはあなたにいくつかの使用であるかもしれないスタックインタプリタの対話チェックするために:
http://mail.python.org/pipermail/pythonmac-sig/2002-February/005054.html
をまたpydoc.help()
のソースを直接見てみてください可能性があり、その上にリンクされたコードスニペットに触発されました。
はちょうどあなたが単にPYTHONSTARTUP
環境変数を使用して対話プロンプトを含むファイルを利用することができることに気づきました。 PYTHONSTARTUP
が指すファイル内のコマンドは、インタプリタが対話形式で実行されている場合にのみ実行されます。あなたは、Pythonの外で環境変数を設定したくない場合は、あなたがsitecustomize.py
で目的のファイルに変数を設定することができるかもしれない
http://docs.python.org/tutorial/interpreter.html#the-interactive-startup-file
、しかし、ときに私はロードを見つけるためにそれを検討してみました私の答えの最初の部分から私はリンクに戻ってきました。
JABは、コードを見て私を得たと私は最終的にはこの思い付いた:(とPy3kためc_char_pはc_wchar_pする必要があります)
import ctypes
import getopt
ctypes.pythonapi.Py_GetArgcArgv.restype = None
ctypes.pythonapi.Py_GetArgcArgv.argtypes = [
ctypes.POINTER(ctypes.c_int),
ctypes.POINTER(ctypes.POINTER(ctypes.c_char_p))]
count = ctypes.c_int()
args = ctypes.pointer(ctypes.c_char_p())
ctypes.pythonapi.Py_GetArgcArgv(ctypes.byref(count), ctypes.byref(args))
argc = count.value
argv = [args[i] for i in range(count.value)]
if argc > 1:
interactive = False
opts, args = getopt.getopt(argv[1:], 'i')
for o, a in opts:
if o == '-i':
interactive = True
else:
interactive = True
ちょっと醜いが、仕事をしていません。
あなたが望むように機能するソリューションを見つけられたらうれしいです。 – JAB
sys.flagsの確認は、よりクリーンな方法です。
>>> import sys
>>> sys.flags.interactive
1
IDLEも性質上インタラクティブですが、フラグは設定されていません。私は以下のようにします:
>>> if sys.flags.interactive or sys.modules.has_key('idlelib'):
>>> pass # do stuff specific to interactive.
これは、コマンドラインで-iが指定されているかどうかをチェックするだけです。インタプリタがインタラクティブモードにしても "bare"を開始した場合は失敗します。 – jtniehof
- 1. ハプティックフィードバックの電話設定を確認してください
- 2. 携帯電話の有無を確認してください
- 3. Simulate Python対話モード
- 4. sitecustomizeのEclipse Pythonエラー。トレースバックのためにPYTHONVERBOSEを設定してください:
- 5. Pythonでスクリプト/プログラムのバージョンを確認してください。
- 6. Pythonでラクダのケースを確認してください
- 7. コードネーム1:電話が無音モードであることを確認してください
- 8. 配列に対する値を確認してください。
- 9. Python-Kafka:スクリプトモードではなく対話モードで実行されているプログラム
- 10. pythonのsklearnのtf-idfスコアを確認してください
- 11. Pythonの変数の状態を確認してください
- 12. Pythonのポストバックパターンを確認してください
- 13. CSV - Pythonからのデータ型を確認してください
- 14. Pythonマルチプロセッシング - 各プロセスのステータスを確認してください
- 15. C#とPythonのリスト要素を確認してください
- 16. PythonとNeo4j:空のstatementresultを確認してください
- 17. name_suffixを確認してください
- 18. SQL:URLを確認してください
- 19. URLを確認してください
- 20. senderEmailAddressを確認してください
- 21. 国番号で携帯電話番号を確認してください
- 22. python bluetooth - 接続状態を確認してください
- 23. パスが絶対パスか相対パスかを確認してください
- 24. 電話番号のWindows Azureアカウントを確認してください
- 25. 可能な値のリストに対して値を確認してください
- 26. bashを使用してLFTPにコマンドを送信してから、対話モードにしてください。
- 27. Python:使用している関数のバージョンを確認してください
- 28. CSVファイルに対してADコンピュータ名を確認してください
- 29. vbscriptでiis認証設定を確認してください
- 30. Pythonで初期化された変数を確認してください
このコードは、もはやpydoc(日付をチェックしてください...)でなく、sitecustomizeのスタックフレームは対話モードと非対話モードの違いがありません。しかし、チェックの価値があった。 – jtniehof
あなたの状況には、驚くほど簡単な解決策があることが突然認識されました。私の答えをもう一度見てください。 – JAB
私は、ユーザーのPYTHONSTARTUPを踏むことなくそれを処理する良い方法は考えられませんでしたが、そのコードを見ていました...私の答えを見てください。 – jtniehof