6

コマンドラインPythonアプリケーションで複数行のユーザー入力を処理する簡単な方法はありますか?

私はしたくないので、結果のない答えを探していました:

  • ファイルからデータを読み取る(私が知っている、それが最も簡単な方法です);
  • GUIを作成します(コマンドラインだけにとどまりましょう、OK?);
  • テキストを1行ずつロードします(一度に貼り付け、入力したり、1行ずつ貼り付けたりしないでください)。
  • 各行を個別に処理します(テキスト全体を文字列として使用したい)。

私が達成したいのは、ユーザーがテキスト全体(複数行を含む)を貼り付けて、完全にコマンドラインツールで入力を1つの文字列としてキャプチャできるようにすることです。Pythonで可能ですか?

ソリューションがLinux環境とWindows環境の両方で機能する場合は、すばらしいと思います(たとえば、一部のソリューションでは、cmd.exeの動作方法が原因で問題が発生する可能性があると聞いています)。

4

3 に答える 3

7
import sys

text = sys.stdin.read()

貼り付けた後、ファイルの終わりの制御文字( Linuxではctrl+ 、Windowsでは+が続く)を送信して、入力がなくなったことをPythonに通知する必要があります。DctrlZenter

この方法はパイプでも機能します。上記のスクリプトが呼び出された場合、次のpaste.pyことができます

$ echo "hello" | python past.py

text等しくなり"hello\n"ます。これはWindowsでも同じです。

C:\ Python27> dir | python past.py

上記のコマンドは、の出力を変数に保存しdirますtext。入力がパイプを使用して提供される場合、ファイルの終わりの文字を手動で入力する必要はありません。入力を作成するプログラムが完了すると、Pythonに自動的に通知されます。

于 2012-09-19T12:05:08.913 に答える
2

raw_input()複数行のテキストを貼り付けるためにユーザーが必要とする追加のアクションなしで、クリップボードからテキストを取得できます。

import Tkinter
root = Tkinter.Tk()
root.withdraw()

text = root.clipboard_get()

root.destroy()

Pythonを使用してWindowsのクリップボードに文字列をコピーするにはどうすればよいですか?も参照 してください。

于 2012-09-19T14:00:24.190 に答える
0

使用する :

input = raw_input("Enter text")

これらは、すべての入力を文字列として入力します。したがって、テキスト全体を貼り付けると、すべてがinput変数に含まれます。

編集:どうやら、これはWindows上のPythonシェルでのみ機能します。

于 2012-09-19T11:43:53.470 に答える