私はかなりのヘルプテキストを出力するPythonパッケージを持っています:help(package)
このヘルプテキストを、によって表示される形式でファイルにエクスポートしたいと思います。help(package)
どうすればこれを行うことができますか?
pydoc.render_doc(thing)は、Thingのヘルプテキストを文字列として取得します。pydoc.textやpydoc.htmlなどのpydocの他の部分は、ファイルへの書き込みに役立ちます。
Linuxで修飾子を使用する-w
と、たとえば、現在のディレクトリのhtmlに出力が書き込まれます。
pydoc -w Rpi.GPIO
コマンドから表示されるすべてのhelp()
テキストをhelp(Rpi.GPIO)
、シェルの現在のディレクトリにある、適切にフォーマットされたファイルRpi.GPIO.htmlに配置します。
これは少しハックです(そしておそらくどこかにもっと良い解決策があります)が、これはうまくいきます:
import sys
import pydoc
def output_help_to_file(filepath, request):
f = open(filepath, 'w')
sys.stdout = f
pydoc.help(request)
f.close()
sys.stdout = sys.__stdout__
return
その後...
>>> output_help_to_file(r'test.txt', 're')
古い質問ですが、ターミナルが使用している関数の出力を書き込むための新しい推奨される一般的なソリューション(Python 3.4以降の場合):print()
contextlib.redirect_stdout
import contextlib
def write_help(func, out_file):
with open(out_file, 'w') as f:
with contextlib.redirect_stdout(f):
help(func)
使用例:
write_help(int, 'test.txt')
組み込みのhelp()が提供するのと同じように、「クリーンな」テキスト出力を取得し、ファイルなどへのエクスポートに適したものにするために、次を使用できます。
>>> import pydoc
>>> pydoc.render_doc(len, renderer=pydoc.plaintext)
'Python Library Documentation: built-in function len in module builtins\n\nlen(obj, /)\n Return the number of items in a container.\n'
ヘルプ(ヘルプ)を実行すると、次のように表示されます。
Help on _Helper in module site object:
class _Helper(__builtin__.object)
| Define the builtin 'help'.
| This is a wrapper around pydoc.help (with a twist).
[残りを切り取った]
つまり、pydocモジュールを確認する必要がありhelp(something)
ます。文字列として機能するものを返す1つまたは複数のメソッドがあります...
選択した回答がうまくいかなかったので、もう少し検索して、Daniwebで機能するものを見つけました。クレジットはvegaseatに行きます。https://www.daniweb.com/programming/software-development/threads/20774/starting-python/8#post1306519
# simplified version of sending help() output to a file
import sys
# save present stdout
out = sys.stdout
fname = "help_print7.txt"
# set stdout to file handle
sys.stdout = open(fname, "w")
# run your help code
# its console output goes to the file now
help("print")
sys.stdout.close()
# reset stdout
sys.stdout = out
これを行う最も簡単な方法は、
sysモジュール
オペレーティングシステムとそれ自体の間でデータストリームを開き、ヘルプモジュールからデータを取得して外部ファイルに保存します
file="str.txt";file1="list.txt"
out=sys.stdout
sys.stdout=open('str_document','w')
help(str)
sys.stdout.close
最もクリーンな方法
仮定help(os)
ステップ1-Pythonコンソールで
import pydoc
pydoc.render_doc(os, renderer=pydoc.plaintext)`
#this will display a string containing help(os) output
ステップ2-文字列をコピーする
ステップ3-ターミナル上
echo "copied string" | tee somefile.txt
クラス情報をテキストファイルに書き込みたい場合。以下の手順に従ってください
クラスのどこかにpdbフックを挿入し、ファイルを実行します
pdbをインポートします。pdb.set_trace()
上記の手順1〜3を実行します
Windowsでは、Windowsコマンドラインウィンドウを開き、PythonインストールのLibサブフォルダーに移動して、次のように入力します。
python pydoc.py moduleName.memberName> c:\ myFolder \ memberName.txt
moduleNameのプロパティまたはメソッドmemberNameのドキュメントをファイルmemberName.txtに配置します。モジュールの階層のさらに下にオブジェクトが必要な場合は、ドットを追加するだけです。例えば
python pydoc.py wx.lib.agw.ultimatelistctrl> c:\ myFolder \ UltimateListCtrl.txt
wxPythonパッケージのagwパッケージにあるUltimateListCtrlコントロールのドキュメントをUltimateListCtrl.txtに配置します。
pydocはすでに必要な機能を提供しています。これは、すべての質問応答システムに必要な非常に優れた設計の機能です。pydoc.Helper。initには出力オブジェクトがあり、すべての出力がそこに送信されます。独自の出力オブジェクトを使用する場合は、好きなことを行うことができます。例えば:
クラスOUTPUT():
def __init__(self):
self.results = []
def write(self,text):
self.results += [text]
def flush(self):
pass
def print_(self):
for x in self.results: print(x)
def return_(self):
return self.results
def clear_(self):
self.results = []
として渡されたとき
O = OUTPUT()#結果を覚えておく必要がありますが、以下を参照してください。
ヘルプ=pydoc.Helper(O)
すべての結果をOUTPUTインスタンスに保存します。もちろん、O = OUTPUT()で始めるのは最善のアイデアではありません(以下を参照)。render_docは中央の出力ポイントではありません。出力はです。Mark Lutzの「More」のようなものを使用して、大きな出力が画面から消えないようにするために、OUTPUTが必要でした。別の出力を使用すると、ファイルに書き込むことができます。
クラスpydoc.Helperの最後に「return」を追加して、必要な情報を返すこともできます。何かのようなもの:
self.output_の場合:self.output_を返します
動作するはずです、または
self.output_の場合:self.output.return_()を返します
pydocは適切に設計されているため、これはすべて可能です。ヘルプの定義では入力引数と出力引数が省略されているため、非表示になっています。