IPython का जादू% पेस्ट कैसे काम करता है?


93

मैं पहले से ही इंडेंट किए गए अजगर कोड / संपूर्ण कार्यों और कक्षाओं को IPython में कॉपी करना चाहता हूं। हर बार मैं कोशिश करता हूं कि इंडेंटेशन खराब हो जाए और मुझे त्रुटि संदेश मिल जाए:

IndentationError: unindent does not match any outer indentation level (<ipython-input-23-354f8c8be51b>, line 12)

If you want to paste code into IPython, try the %paste and %cpaste magic functions.


3
मुझे पता है, यह पहले से ही stackoverflow पर है, लेकिन यह 3 खोजों के बाद नहीं मिला, इसलिए मैंने अपना संस्करण जोड़ा।
Framester

जवाबों:


136

आप सीधे IPython को कॉपी नहीं कर सकते। यह चरण हैं:

  1. उन पंक्तियों को कॉपी करें जिन्हें आप क्लिपबोर्ड में IPython में कॉपी करना चाहते हैं
  2. दर्ज %pasteIPython में
  3. एंटर दबाए
  4. फायदा!

47
% पेस्ट की आवश्यकता होती है हालांकि टिंकेटर, इसलिए यदि आपके पास ऐसा नहीं है कि एक और अच्छी शर्त% cpaste है
yekta

61
आप वास्तव में कोड को सीधे IPython में कॉपी कर सकते हैं: आपको पहले प्रवेश करके ऑटो-इंडेंटेशन को अक्षम करना पड़ सकता है %autoindent
एरिक ओ लेबिगॉट

धन्यवाद EOL! आपके लिए +1
Framester

5
में Ipython 5 आप सिर्फ कोड पेस्ट कर सकते हैं। %pasteअब और जरूरत नहीं है। इस उत्तर को पढ़ें ।
लेवोन

1
आपको पहले pasteभी % की आवश्यकता नहीं है ।
वर्डफेयर वाइज

40

चरणों पर एक स्पष्टीकरण:

  • सबसे पहले, अपने क्लिपबोर्ड में लक्ष्य रेखाओं को कॉपी करें।

  • IPython प्रॉम्प्ट में टाइप करें:

    • यदि टिंकर पर: दर्ज करें %paste
    • अन्यथा: दर्ज करें %cpaste
  • पेस्ट (Ctrl-V) और हिट दर्ज करें।

  • फिर टाइप करें --और एंटर करें।

उदाहरण के लिए:

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

3
आपको Ctrl-V करने की आवश्यकता नहीं है। केवल% पेस्ट टाइप करें और एंटर दबाएं।
14

21

Ipython 5 के रूप में आपको किसी भी जादू कमांड की आवश्यकता नहीं है, बस इसे पेस्ट करें

ipython5

धन्यवाद prompt_toolkit, IPythonअब समर्थन करता है:

  • सिंटैक्स हाइलाइटिंग जैसे ही आप टाइप करते हैं
  • वास्तविक बहु-पंक्ति संपादन (ऊपर और नीचे तीर कुंजी लाइनों के बीच चलते हैं)
  • इंडेंटेशन को तोड़ने या कोड को तुरंत निष्पादित किए बिना मल्टी-लाइन पेस्ट
  • बेहतर कोड पूरा करने वाला इंटरफ़ेस (हम उस और अधिक सुधार के लिए योजना बनाते हैं) वैकल्पिक माउस समर्थन

यहाँ इस पर अधिक

ipythonनवीनतम संस्करण में अपग्रेड करने के लिए

pip install ipython --upgrade 

क्या बहु-लाइनों को चिपकाना और प्रत्येक पंक्ति में कोड को स्वचालित रूप से निष्पादित करना संभव है?
एरिक डुमिनील

हां, बस कोड पेस्ट करें और एंटर दबाएं। अगर आप% pdb या ipdb को डीबग करना चाहते हैं। उदाहरण
लेवॉन

यह पायथन रिप्ले, कोड के आउटपुट का भी समर्थन करता है, जो तीन >संकेतों के साथ शुरू होता है :>>> a = 1 + 2
फ्लिम

यह सब समय मैं% cpaste कर रहा हूँ .. अच्छा!
बजे गेर्शोन हरकेजग

1
मुझे लगता है कि यह उस पर्यावरण पर निर्भर करता है जिससे आप पेस्टिंग कर रहे हैं और आप पेस्टिंग कैसे कर रहे हैं? मेरे सहयोगी हमारे लिनक्स होस्ट में एसएसएच को विंडोज 10 की कमांड प्रॉम्प्ट का उपयोग कर रहे हैं, वहां एक डॉकटर कंटेनर में आईपाइथन खोलता है और पहले से ही इंडेंट कोड ( राइट-क्लिक करके ) पेस्ट करने की कोशिश करता है , और उसे iPththon 7.8.0 में भी अतिरिक्त इंडेंटेशन मिलता है। जिस तरह से मैं कमांड प्रॉम्प्ट के राइट-क्लिक व्यवहार को समझता हूं वह यह है कि यह वास्तव में क्लिपबोर्ड में जो कुछ भी है वह लेता है और इसे चरित्र द्वारा चरित्र को आउटपुट करता है जैसे कि आप इसे टाइप कर रहे हैं। इसलिए iPython को यह जानने का कोई तरीका नहीं है कि आप वास्तव में चिपकाने वाले हैं।
काल

6

%paste की आवश्यकता है Tkinter। यदि आप ubuntu में हैं, तो आप इसे स्थापित कर सकते हैं

sudo apt-get install python-tk

यदि आप पायथन 3 पर हैं

sudo apt-get install python3-tk

फिर ipython को पुनरारंभ करें और %pasteअपने क्लिपबोर्ड से पेस्ट करने के लिए उपयोग करें।


1

उपयोगी उत्तरों में से एक को टिप्पणियों में खो दिया गया था, इसलिए इसे एक और उपयोगी IPython मैजिक फंक्शन के लिए एक संदर्भ जोड़ने के साथ इसे आराम करना चाहता था।

@ ईओएल ने जो कहा, उसे पहले से तय करने के लिए, ओपी की समस्या को हल करने का एक तरीका पहले से ऑटो-इंडेंटेशन को बंद करना है %autoindent और पेस्ट करें (यदि आप उपयोग कर रहे हैं %paste, तो आवश्यक नहीं )।

अब यहां पहले से ही क्या है, इसके बारे में अधिक जानकारी जोड़ने के लिए, आईपीथॉन में एक और उपयोगी मोड है %doctest_modeजो आपको डॉक स्ट्रिंग्स से पेस्ट उदाहरण और परीक्षण स्निपेट की प्रतिलिपि बनाने की अनुमति देता है। यह इंटरैक्टिव पाइथन सत्र आउटपुट को निष्पादित करने के लिए भी उपयोगी है, जिसे आप प्रांरभिक स्ट्रिंग्स से पहले पट्टी किए बिना प्रलेखन और ऑनलाइन फ़ोरम में पा सकते हैं।


1

Ubuntu उपयोगकर्ताओं के लिए जो पायथन 3 पर हैं।

python-tkअजगर 2 के लिए है।

%pasteपायथन 3 पर काम करने के लिए , python3-tkपैकेज स्थापित करें :

sudo apt-get install python3-tk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.