2016-01-18 8 views
8

多くのオンラインPythonの例では、各行の前に通常の先頭の ">>>"と "..."文字を含むインタラクティブなPythonセッションが表示されます。Python:対話モードで先頭の ">>>"と "..."を無視しますか?

多くの場合、このコードをコピーして、これらのプレフィックスを取得しないでください。

このような場合、コピーした後にこのコードを自分自身のPythonインタプリタに貼り付けたい場合は、最初にプレフィックスを取り除く必要があります。

PythonやiPython(または他のPythonインタプリタ)に貼り付けられた行の先頭の ">>>"と "..."文字を自動的に無視する方法を知っている人はいますか?

例:

>>> if True: 
...  print("x") 
... 
+1

@PadraicCunningham、それは 'python'インタープリタのデフォルト動作ではありません。 [IPython](https://ipython.org/)はPythonには含まれていません。 – Chris

+3

ええ、op _did_に質問の中のIPythonがあります:) – bakkal

+1

@Chris、私はPythonインタプリタについて言及したことはありませんでした。私はOPyを参照するipythonインタプリタについて話しました。*誰かがPythonやiPythonを入手する方法を知っていますか? ... * –

答えて

2

は、あなただけの複数行ペースト中>>>...含めるautoindentのスイッチをオフにするか必要があります。

In [14]: %autoindent 
Automatic indentation is: OFF 
In [15]: >>> for i in range(10): 
    ....: ...  pass 
    ....: 

In [16]: >>> for i in range(10): 
    ...: ...  pass 
    ...: ... 
In [17]: >>> for i in range(10): 
    ...: ...  pass 
    ...: ... 

In [18]: %autoindent 
Automatic indentation is: ON 

In [19]: >>> for i in range(10): 
    ....:  ...  pass 
    ....:  
    File "<ipython-input-17-5a70fbf9a5a4>", line 2 
    ...  pass 
    ^
SyntaxError: invalid syntax 

をか>>>をコピーしていない、それが正常に動作します:

In [20]: %autoindent 
Automatic indentation is: OFF 

In [20]: for i in range(10): 
    ....: ...  pass 
    ....: 
+0

はい。これはipythonの私のために働いて、%autoindentをオフにしました。それは私の問題を解決するのに十分です。ありがとうございます。 – HippoMan

5

IPythonは、自動的にあなたのためにこれを行います。

In [5]: >>> print("hello") 
hello 

In [10]: >>> print(
    ....: ... "hello" 
    ....:) 
hello 
+0

私は' for'ループを試しました( 'for i in range(10):pass')とそれはうまくいかなかった。私は "合格"でSystaxErrorを得た。 – tdelaney

+0

まあ、IPythonはあなたのために自動的にインデントしようとします。だからおそらくそこに問題があります。 '%cpaste'を実行して貼り付けモードを有効にし、' - 'を貼り付けを終了することができます。 –

1

シェルに貼り付けるのと全く同じではありませんが、doctestモジュールを使うと便利です。 Pythonモジュールまたは通常のテキストファイルをスキャンして、インタラクティブスクリプトの断片を探してから実行します。その主な使用例は、ドキュメントと単体テストを混在させることです。あなたは、ファイルへのそのようなこと保存

This is some code to demonstrate the power of the `if` 
statement. 

>>> if True: 
...  print("x") 
... 
x 

Remember, each `if` increases entropy in the universe, 
so use with care. 

>>> if False: 
...  print("y") 
... 

としてチュートリアルを持っていると仮定して、doctest

$ python -m doctest -v k.txt 
Trying: 
    if True: 
     print("x") 
Expecting: 
    x 
ok 
Trying: 
    if False: 
     print("y") 
Expecting nothing 
ok 
1 items passed all tests: 
    2 tests in k.txt 
2 tests in 1 items. 
2 passed and 0 failed. 
Test passed. 

doctestを実行すると、スクリプトの一部を実行し、期待される出力と比較します。

UPDATE

はここでクリップボードに何取るとPythonスクリプトの断片をバックペーストするスクリプトです。あなたの例をコピーし、このスクリプトを実行してシェルに貼り付けます。

#!/usr/bin/env python3 

import os 
import pyperclip 

pyperclip.copy(os.linesep.join(line[4:] 
    for line in pyperclip.paste().split(os.linesep) 
    if line[:4] in ('>>> ', '... '))) 
関連する問題