পাইথন কোড থেকে কীভাবে REPL- এ পড়ুন (পড়ুন, ইভাল, প্রিন্ট করুন, লুপ করুন)


108

স্ক্রিপ্টটি কমান্ড লাইন থেকে চালু করা হলেও, প্রোগ্রামারিকভাবে পাইথন স্ক্রিপ্টটিকে কার্যকর করার ক্ষেত্রে একটি নির্বিচারে বিন্দুতে একটি রেপিলের মধ্যে পড়তে বাধ্য করার কোনও উপায় আছে কি?

আমি একটি তাত্পর্যপূর্ণ ও নোংরা প্লটিং প্রোগ্রাম লিখছি, যা আমি স্টিডিন বা কোনও ফাইলের ডেটা পড়তে চাই, এটি প্লট করব এবং তারপরে প্লটটি কাস্টমাইজ করার জন্য আরপিএল-এ নেমে যেতে চাই।

উত্তর:


104

আপনি পাইথনের জন্য ইন্টারেক্টিভ বিকল্পটি ব্যবহার করে দেখতে পারেন:

python -i program.py

এটি program.py কোডটি কার্যকর করে, তারপরে REPL এ যান। আপনার সর্বোচ্চ স্তরের প্রোগ্রাম.পিতে সংজ্ঞা বা আমদানি করা যে কোনও কিছুই পাওয়া যাবে be


21
আপনি যখন অন্ধকার দিকে স্যুইচ করতে প্রস্তুত, আইপিথন -i প্রোগ্রাম.পি আপনার জন্য আছে।
জোফোকার 20

চিত্তাকর্ষক এবং সহজ।
নিশান্ত

126

আমি প্রায়শই এটি ব্যবহার করি:

def interact():
    import code
    code.InteractiveConsole(locals=globals()).interact()

47
আপনি এটি এর চেয়েও সহজতর করতে পারেন: আমদানি কোড; কোড.interact (স্থানীয় = স্থানীয় ())
স্টিভেন ক্রিস্কাল্লা

3
মধ্যে pdb, আপনি ব্যবহার করতে পারেন interact
অঙ্কিত

43

আপনার এটি কীভাবে করা উচিত তা এখানে (আইপিথন> v0.11):

import IPython
IPython.embed()

আইপিথনের জন্য <= v0.11:

from IPython.Shell import IPShellEmbed

ipshell = IPShellEmbed()

ipshell() # this call anywhere in your program will start IPython

আপনার আইপিথন ব্যবহার করা উচিত, পাইথন আরপিএলসের ক্যাডিল্যাক। Http://ipython.org/ipython-doc/stable/interactive/references.html#eebding-ipython দেখুন

ডকুমেন্টেশন থেকে:

এটি বৈজ্ঞানিক কম্পিউটিং পরিস্থিতিতেও কার্যকর হতে পারে যেখানে কিছু স্বয়ংক্রিয়, গণনামূলকভাবে নিবিড় অংশ করা এবং তারপরে ডেটা, প্লট ইত্যাদির দিকে নজর দেওয়া বন্ধ করা একটি সাধারণ আইপিথন উদাহরণ খোলার ফলে আপনার ডেটা এবং ফাংশনগুলিতে সম্পূর্ণ অ্যাক্সেস পাওয়া যাবে, এবং ইন্টারেক্টিভ অংশটি সম্পন্ন করার পরে আপনি প্রোগ্রামের প্রয়োগ পুনরায় শুরু করতে পারেন (সম্ভবত পরে আবার থামতে, প্রয়োজনের তুলনায় অনেকবার)।


3
আইপিথন দুর্দান্ত, তবে যদি ওপি এমন কোনও সমাধান চায় যা কেবলমাত্র অন্তর্নির্মিত পাইথন ব্যবহার করে তবে জেসনের কোড nআইএনটিভেক্টিভ কনসোল () সমাধানটি আপনার কীভাবে করা উচিত is :-)
বেন হোয়েট

18

আইপথনের ব্যবহার এবং ডিবাগারের কার্যকারিতা পেতে আপনার আইপিডিবি ব্যবহার করা উচিত ,

আপনি এটি পিডিবি হিসাবে একইভাবে ব্যবহার করতে পারেন:

import ipdb
ipdb.set_trace()

17

আপনি ডিবাগারটি চালু করতে পারেন:

import pdb;pdb.set_trace() 

আপনি কী জন্য REPL চান তা নিশ্চিত নন, তবে ডিবাগারটি খুব সাদৃশ্যপূর্ণ।


3
আমি সন্দেহ করব যে তিনি একটি চলমান প্রক্রিয়াতে লাইভ পরিবর্তন করতে চান, Lis লা লিস্প।
পিনোচলে

1
স্ক্রিপ্টটি আপনাকে পিডিবিতে চালু করে আবার চালানো আবার শুরু করার কোনও উপায় আছে কি?
জেফ ওয়েলিং

1
আমি পাইথনের ভিআইএম ইনস্টাডে কোড স্নিপেট লিখে সেভ করে তারপরে উদাহরণস্বরূপ পাইথন -i% করি। বা পিডিবি। একটি ভাল ব্যবহারের ক্ষেত্রে।
নিশান্ত

0

আমি কেবল এটি আমার নিজের একটি স্ক্রিপ্টে করেছি (এটি একটি অটোমেশন ফ্রেমওয়ার্কের অভ্যন্তরে চলে যা ইন্সট্রুমেন্টের জন্য একটি বিশাল পিআইটিএ):

x = 0 # exit loop counter
while x == 0:
    user_input = raw_input("Please enter a command, or press q to quit: ")
    if user_input[0] == "q":
        x = 1
    else:
        try:
            print eval(user_input)
        except:
            print "I can't do that, Dave."
            continue

আপনি যেখানেই ব্রেক ব্রেকপয়েন্ট চান সেখানে এটি রাখুন এবং পাইথন ইন্টারপ্রেটারের মতো একই সিনট্যাক্স ব্যবহার করে আপনি রাষ্ট্রটি পরীক্ষা করতে পারেন (যদিও এটি আপনাকে মডিউল আমদানি করতে দেবে বলে মনে হয় না)। এটি খুব মার্জিত নয়, তবে এটির জন্য অন্য কোনও সেটআপের প্রয়োজন নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.