23

私はかなりのヘルプテキストを出力するPythonパッケージを持っています:help(package)

このヘルプテキストを、によって表示される形式でファイルにエクスポートしたいと思います。help(package)

どうすればこれを行うことができますか?

4

10 に答える 10

20

pydoc.render_doc(thing)は、Thingのヘルプテキストを文字列として取得します。pydoc.textやpydoc.htmlなどのpydocの他の部分は、ファイルへの書き込みに役立ちます。

Linuxで修飾子を使用する-wと、たとえば、現在のディレクトリのhtmlに出力が書き込まれます。

pydoc -w Rpi.GPIO

コマンドから表示されるすべてのhelp()テキストをhelp(Rpi.GPIO)、シェルの現在のディレクトリにある、適切にフォーマットされたファイルRpi.GPIO.htmlに配置します。

于 2012-06-29T17:35:24.527 に答える
12

これは少しハックです(そしておそらくどこかにもっと良い解決策があります)が、これはうまくいきます:

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')
于 2012-06-29T17:05:38.240 に答える
8

古い質問ですが、ターミナルが使用している関数の出力を書き込むための新しい推奨される一般的なソリューション(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')
于 2018-08-17T08:47:13.417 に答える
6

組み込みの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'
于 2019-12-20T00:40:06.700 に答える
2

ヘルプ(ヘルプ)を実行すると、次のように表示されます。

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つまたは複数のメソッドがあります...

于 2012-06-29T16:42:40.493 に答える
2

選択した回答がうまくいかなかったので、もう少し検索して、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
于 2018-11-21T19:49:41.793 に答える
1

これを行う最も簡単な方法は、

sysモジュール

オペレーティングシステムとそれ自体の間でデータストリームを開き、ヘルプモジュールからデータを取得して外部ファイルに保存します

file="str.txt";file1="list.txt"
out=sys.stdout
sys.stdout=open('str_document','w')
help(str)
sys.stdout.close
于 2018-11-28T16:57:10.493 に答える
1

最もクリーンな方法

仮定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 

クラス情報をテキストファイルに書き込みたい場合。以下の手順に従ってください

  1. クラスのどこかにpdbフックを挿入し、ファイルを実行します

    pdbをインポートします。pdb.set_trace()

  2. 上記の手順1〜3を実行します

于 2020-12-31T12:01:47.423 に答える
0

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に配置します。

于 2018-03-14T19:13:01.847 に答える
0

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は適切に設計されているため、これはすべて可能です。ヘルプの定義では入力引数と出力引数が省略されているため、非表示になっています。

于 2018-07-30T22:12:00.720 に答える