Bagaimana IPython's sihir %paste work?

Saya ingin copy sudah menjorok kode Python / seluruh fungsi dan kelas ke IPython. Setiap kali saya mencoba lekukan kacau dan saya mendapatkan pesan galat berikut:

IndentationError: unindent tidak sesuai outer lekukan tingkat (<ipython-input-23-354f8c8be51b>, baris 12)

Jika anda ingin menyisipkan kode ke IPython, cobalah %paste dan %cpaste fungsi magic.

Mengomentari pertanyaan (1)
Larutan

Anda dapat't copy untuk IPython ini diatas. Ini adalah langkah-langkahnya:

  1. Copy baris yang ingin anda salin ke IPython ke clipboard
  2. Masukkan %paste ke IPython
  3. Tekan enter
  4. Keuntungan!
Komentar (5)

Klarifikasi pada langkah-langkah:

  • Pertama, target salin baris ke clipboard anda.

  • Jenis ke iPython prompt:

  • Jika pada Tkinter: masukkan %paste
  • Jika tidak: masukkan %cpaste
  • Paste (Ctrl-V) dan tekan enter.

  • Kemudian ketik - dan tekan enter.

Misalnya:

In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:for l in "Hello World":
:    print l,
:--
H e l l o   W o r l d
Komentar (1)

Sebagai Ipython 5 anda don't perlu magic perintah, hanya paste

Terima kasih untuk prompt_toolkit, IPython sekarang mendukung:

  • Sintaks menyoroti saat anda mengetik
  • Real multi-line editing (up dan down tombol panah bergerak antara garis)
  • Multi-line paste tanpa melanggar lekukan atau segera mengeksekusi kode
  • Kode yang lebih baik penyelesaian interface (kami berencana untuk meningkatkan lebih lanjut) Opsional dukungan mouse

Lebih lanjut tentang ini di sini

Untuk meng - ipython ke versi terbaru

pip install ipython --upgrade 
Komentar (6)

%paste membutuhkan Tkinter. Jika anda berada di ubuntu, anda dapat menginstalnya dengan

sudo apt-get install python-tk

Jika anda berada di Python3

sudo apt-get install python3-tk

Kemudian restart ipython dan menggunakan % paste ' untuk paste dari clipboard anda.

Komentar (0)

Untuk pengguna ubuntu yang ada di Python 3.

The python-tk adalah untuk Python versi 2.

Untuk membuat %paste bekerja pada Python 3, instal python3-tk paket:

sudo apt-get install python3-tk
Komentar (0)

Salah satu jawaban yang berguna yang hilang di komentar, jadi ingin mengulang kembali itu bersama dengan menambahkan referensi untuk yang lain berguna IPython sihir fungsi.

Pertama, untuk menyatakan kembali apa yang @EOL mengatakan, salah satu cara untuk memecahkan OP's masalahnya adalah untuk mematikan auto-lekukan dengan terlebih dahulu menjalankan %autoindent dan melakukan paste (tidak diperlukan jika anda menggunakan %paste, tentu saja).

Sekarang untuk menambahkan lebih banyak informasi yang sudah ada di sini, salah satu yang lebih berguna mode di IPython adalah %doctest_mode yang memungkinkan anda untuk copy paste contoh dan tes cuplikan dari doc string. Ini juga berguna untuk mengeksekusi interaktif python sesi output yang bisa anda cari di dokumentasi dan forum online, tanpa harus strip pertama keluar prompt string.

Komentar (0)