IPython नोटबुक सेल में टेक्स्ट फ़ाइलों (.py) को लोड / एडिट / रन / सेव कैसे करें?


232

मैं हाल ही में अपने वर्कफ़्लो के हिस्से के रूप में IPython पुस्तिकाओं का उपयोग करने के लिए आगे बढ़ा हूं। हालाँकि, मैं एक खुली IPython नोटबुक की अलग-अलग कोशिकाओं में .py फ़ाइलों को आयात करने का एक तरीका खोजने में सफल नहीं रहा हूं ताकि वे संपादित, चला सकें और फिर सहेजे जा सकें। क्या यह किया जा सकता है?

मैंने पाया इस प्रलेखन जो मुझे बताता है कि कैसे नए नोटबुक के रूप में .py फ़ाइलें आयात करने में, लेकिन यह मैं क्या हासिल करना चाहते का कम पड़ता है।

किसी भी सुझाव को सराहा जाएगा।


6
अच्छा प्रश्न। मुझे अभी तक एक संतोषजनक जवाब नहीं मिला है। यह विशेष रूप से महत्वपूर्ण है जब इंटरनेट पर एक IPython नोटबुक की सेवा। यदि लोग आयात किए गए फ़ंक्शन के स्रोत कोड को देखना / संपादित करना चाहते हैं (सिंटैक्स हाइलाइटिंग, आदि के साथ) तो वर्तमान में ऐसा करने का कोई आसान तरीका नहीं है। यह केवल pyn फ़ाइलों को ipynb फ़ाइलों में बदलने के बिना खोलने के लिए संभव होना चाहिए।
पीटर

जवाबों:


306

संपादित करें : IPython 3 (अब Jupyter परियोजना) से शुरू, नोटबुक में एक टेक्स्ट एडिटर है जिसे टेक्स्ट फ़ाइलों को लोड / संपादित / सहेजने के लिए एक अधिक सुविधाजनक विकल्प के रूप में इस्तेमाल किया जा सकता है।

एक पाठ फ़ाइल को मैजिक कमांड के साथ नोटबुक सेल में लोड किया जा सकता है %load

यदि आप किसी सेल को निष्पादित करते हैं:

%load filename.py

की सामग्री filename.pyअगली सेल में लोड की जाएगी। आप इसे हमेशा की तरह संपादित और निष्पादित कर सकते हैं।

सेल सामग्री को एक फाइल में वापस सेव करने के लिए सेल की %%writefile filename.pyशुरुआत में सेल-मैजिक जोड़ें और इसे चलाएं। खबरदार कि अगर एक ही नाम वाली फाइल पहले से मौजूद है तो चुपचाप ओवरराइट कर दी जाएगी

किसी भी मैजिक कमांड के लिए मदद देखने के लिए ?: जैसे %load?या %%writefile?

जादू कार्यों पर सामान्य सहायता के लिए "% जादू" टाइप करें उपलब्ध जादू कार्यों की सूची के लिए,% lsmagic का उपयोग करें। उनमें से किसी के वर्णन के लिए,% Magic_name ?, जैसे '% cd?' लिखें।

इसे भी देखें: आधिकारिक IPython डॉक्स से मैजिक कार्य


3
यह, प्लस %save -fवह करने का तरीका प्रतीत होता है जो मैं देख रहा था। धन्यवाद!
अनारस्टैक

2
save -fकिसी फ़ाइल में सहेजने का एक अप्रत्यक्ष तरीका है और यह तभी काम करेगा जब आप पहले सेल को निष्पादित करेंगे और फिर सही संदर्भ प्रदान करेंगे। सामान्य तौर पर इसका उपयोग करना आसान होता है %%writefileजो वर्तमान सेल को फ़ाइल में लिखता है। मैंने इसका उल्लेख करने के लिए उत्तर को अपडेट किया।
user2304916

4
वर्तमान में नया मैजिक कमांड %loadpy(इसके बजाय %load) है।
AlQuemist

1
के अनुसार ipython.org/ipython-doc/3/interactive/magics.html का उपयोग %loadकरना ठीक है, आगे जा रहा है: " %loadpy ( उपनाम %load ) - %loadpyने कुछ लचीलापन प्राप्त किया है और .pyविस्तार की आवश्यकता को गिरा दिया है । इसलिए इसे बस में बदल दिया गया है। %load। आप %loadअधिक जानकारी के लिए docstring देख सकते हैं । "
माइकल

118

लिखने / बचाने के लिए

%%writefile myfile.py

  • myfile.py ( -aएपेंड के लिए उपयोग) में सेल सामग्री लिखें / सहेजें । एक अन्य उपनाम:%%file myfile.py

चलाने के लिए

%run myfile.py

  • वर्तमान सेल में myfile.py और आउटपुट परिणाम चलाते हैं

भार / आयात करने के लिए

%load myfile.py

  • वर्तमान सेल में "आयात" myfile.py लोड करें

अधिक जादू और मदद के लिए

%lsmagic

  • अन्य सभी शांत सेल मैजिक कमांड को सूचीबद्ध करें।

%COMMAND-NAME?

  • एक निश्चित कमांड का उपयोग कैसे करें, इस पर मदद के लिए। अर्थात%run?

ध्यान दें

सेल मैजिक कमांड के अलावा, IPython नोटबुक (अब Jupyter नोटबुक) इतनी शांत है कि यह आपको सेल से किसी भी यूनिक्स कमांड का उपयोग करने की अनुमति देता है (यह %%bashसेल मैजिक कमांड का उपयोग करने के बराबर भी है )।

सेल से एक यूनिक्स कमांड चलाने के लिए, बस !मार्क के साथ अपनी कमांड को पूर्ववर्ती करें। उदाहरण के लिए:

  • !python --version अपने अजगर संस्करण देखें
  • !python myfile.pyवर्तमान सेल में myfile.py और आउटपुट परिणाम चलाने, जैसे %run(के बीच अंतर देखना !pythonऔर %runनीचे टिप्पणी में)।

इसके अलावा, उदाहरण के साथ आगे की व्याख्या के लिए इस nbviewer को देखें । उम्मीद है की यह मदद करेगा।


1
धन्यवाद, मैं खिड़कियों का उपयोग करता हूं और कोशिश करता हूं! डीआईआर, आउटपुट !dir Volume in drive D is Documentsआदि ... तो यह सिर्फ बैश नहीं है, बल्कि सीएमडी भी है!
ब्रायन

1
@ यामाज़ीज़ मुझे लगता है कि आपका मतलब है !python --version(टाइपो)
एलेक्जेंड्रे

5
अजीज, यह एक उत्कृष्ट उत्तर है। एक छोटा नोट: यह %run myfile.pyविरोध के रूप में उपयोग करने के लिए बहुत अलग है !python myfile.py। यदि आप पूर्व करते हैं तो यह ipython कर्नेल का उपयोग करके निष्पादित करेगा, जिसमें जो भी प्रीलोडिंग कॉन्फ़िगर किया गया है, शामिल है। एक छोटा सा मुद्दा, लेकिन मैं आज एक बग में भाग गया, जहां मेरे लिए यह एक अंतर था।
ट्रिस्टन रीड

यदि आप %run myfile.pyअपनी स्क्रिप्ट में IPython cell मैजिक कमांड को शामिल करते हुए इस उत्तर के बराबर करना चाहते हैं , तो उपयोग करें %run myfile.ipy
वेन

8

Ipython पुस्तिकाओं "होम" नोटबुक तालिका में एक पायथन फ़ाइल को खींचें और छोड़ें, अपलोड पर क्लिक करें। यह आपके .py फ़ाइल सामग्री वाले केवल एक सेल के साथ एक नई नोटबुक बनाएगा

अपने पसंदीदा संपादक से कॉपी कॉपी / पेस्ट;)


1
आपके उत्तर के लिए धन्यवाद, लेकिन जैसा कि मैंने अपनी पोस्ट के शरीर में उल्लेख किया है, मैं हर बार एक नई नोटबुक बनाने से बचने के लिए देख रहा हूं, लेकिन किसी मौजूदा नोटबुक की सेल से .py स्क्रिप्ट को बनाए रखना है।
अनारोन्स्टैक

अगर मैं गलत हूं तो मुझे ठीक करें: आप टेक्स्ट एडिटर के रूप में नोटबुक का उपयोग नहीं करेंगे? (मेरा मतलब है: सेल में प्रत्येक संशोधन .py फ़ाइल को नहीं बदलेगा)। वैसे, मेरे पास एक सेल में एक .py सामग्री डालने के लिए एक देशी तरीके का कोई सुराग नहीं है, मैं हमेशा जरूरत पड़ने पर अपना कोड कॉपी / पेस्ट करता हूं ... क्षमा करें
राफेल ब्रूड

5

मैंने फ़ाइल खोजने के लिए ipython नोटबुक के भीतर ls और cd का उपयोग करना संतोषजनक पाया है। फिर सेल में your_file_name टाइप करें, और आपको फ़ाइल की सामग्री वापस मिल जाएगी, जिसे आप कोड के बाद सेल में पेस्ट कर सकते हैं।


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