আমি দোভাষীর মধ্যে থেকে পাইথন কমান্ড সহ একটি ফাইল কার্যকর করার চেষ্টা করছি।
সম্পাদনা: আমি সেই ফাইল থেকে ভেরিয়েবল এবং সেটিংস ব্যবহার করার চেষ্টা করছি, পৃথক প্রক্রিয়া শুরু করার জন্য নয়।
আমি দোভাষীর মধ্যে থেকে পাইথন কমান্ড সহ একটি ফাইল কার্যকর করার চেষ্টা করছি।
সম্পাদনা: আমি সেই ফাইল থেকে ভেরিয়েবল এবং সেটিংস ব্যবহার করার চেষ্টা করছি, পৃথক প্রক্রিয়া শুরু করার জন্য নয়।
উত্তর:
অনেক পথ.
খোল থেকে
python someFile.py
আইডিএল এর ভিতরে থেকে, এফ 5 টিপুন ।
যদি আপনি ইন্টারেক্টিভভাবে টাইপ করে থাকেন তবে এটি ব্যবহার করে দেখুন: ( কেবলমাত্র পাইথন 2 !)
>>> variables= {}
>>> execfile( "someFile.py", variables )
>>> print variables # globals from the someFile module
পাইথন 3 এর জন্য , ব্যবহার করুন:
>>> exec(open("filename.py").read())
pythonআপনি অজগর 3 চালাচ্ছেন যদি এটি কাজ করে না, python3পরিবর্তে ব্যবহৃত হয়।
stdinব্যবহার <করার মতো কোনও ফাইল সরবরাহ করার কোনও উপায় আছে execfile()? @ এস-
pythonপয়েন্ট রয়েছে python3।
pythonএটি পরিবেশের ভেরিয়েবলের ফোল্ডারগুলির সন্ধান করার সময় সিস্টেমটি কার্যকর করতে সক্ষম ফলাফলের উপর নির্ভর করে PATH।
পাইথন 2 এর জন্য:
>>> execfile('filename.py')
পাইথন 3 এর জন্য:
>>> exec(open("filename.py").read())
# or
>>> from pathlib import Path
>>> exec(Path("filename.py").read_text())
ডকুমেন্টেশন দেখুন । আপনি যদি পাইথন 3.0 ব্যবহার করেন তবে এই প্রশ্নটি দেখুন ।
এটি কার্যকর করার পরে আপনি ফাইলনাম.পি থেকে গ্লোবালগুলিতে কীভাবে অ্যাক্সেস করেন তার উদাহরণের জন্য @ এস.লোটের উত্তর দেখুন।
exec(open("./path/to/script.py").read(), globals())
এটি একটি স্ক্রিপ্ট কার্যকর করবে এবং দোভাষীর গ্লোবাল স্কোপে (বেশিরভাগ স্ক্রিপ্টিং পরিবেশে স্বাভাবিক আচরণ) এটির সমস্ত বৈশ্বিক পরিবর্তনশীল রাখবে।
openস্ক্রিপ্ট থেকে সরাসরি কোডটি পড়ে। যুক্তিগুলি পাস করার জন্য, এই উত্তরটি দেখুন , তবে পরিবর্তে execfileস্পষ্টতই ব্যবহার করুন execএবং openউপরে দেখানো হয়েছে।
অবাক হয়ে আমি এখনও এটি দেখিনি। আপনি কোনও ফাইল সম্পাদন করতে পারেন এবং তারপরে -iবিকল্পটি ব্যবহার করে মৃত্যুদন্ড কার্যকর হওয়ার পরে দোভাষীকে খোলা রাখতে পারেন :
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18
আমি সেই ফাইলটি থেকে ভেরিয়েবল এবং সেটিংস ব্যবহার করার চেষ্টা করছি, একটি পৃথক প্রক্রিয়া শুরু করার জন্য নয়।
ঠিক আছে, কেবল import filename(মাইনাস। পিপি, একই ডিরেক্টরিতে বা আপনার থাকা দরকার PYTHONPATH) দিয়ে ফাইলটি আমদানি করা ফাইলটি চালাবে, এর ভেরিয়েবল, ফাংশন, শ্রেণি, ইত্যাদি filename.variableনামপত্রে উপলভ্য করে ।
সুতরাং আপনার যদি cheddar.pyভেরিয়েবল স্প্যাম এবং ফাংশন ডিমগুলির সাথে থাকে - আপনি সেগুলি দিয়ে আমদানি করতে পারেন import cheddar, ভেরিয়েবলটি সহ অ্যাক্সেস করতে পারেন cheddar.spamএবং কল করে ফাংশনটি চালাতে পারেনcheddar.eggs()
এতে যদি আপনার cheddar.pyকোনও কোডটি কোনও ফাংশনের বাইরে থাকে তবে তা অবিলম্বে চালানো হবে, তবে আমদানিতে স্টাফ চালানো অ্যাপ্লিকেশনগুলি তৈরি করা আপনার কোডটিকে পুনরায় ব্যবহার করা শক্ত করতে চলেছে। যদি সম্ভব হয় তবে সমস্ত কিছু ফাংশন বা শ্রেণীর ভিতরে রাখুন।
from filename import *
আমার দর্শন থেকে, সর্বোত্তম উপায় হ'ল:
import yourfile
এবং yourfile.py পরিবর্তন করার পরে
reload(yourfile)
অথবা
import imp;
imp.reload(yourfile) in python3
তবে এটি ফাংশনটি তৈরি করবে এবং ক্লাসগুলি এর মতো দেখাচ্ছে: yourfile.function1, yourfile.class1 .....
যদি আপনি সেগুলি গ্রহণ করতে না পারেন তবে শেষ অবধি সমাধানটি হ'ল:
reload(yourfile)
from yourfile import *
আমি বিশেষজ্ঞ নই তবে আমি এটি লক্ষ্য করেছি:
উদাহরণস্বরূপ যদি আপনার কোডটি মাইকোড.পি হয় এবং আপনি কেবল 'ইম্পোর্ট মাইকোড' টাইপ করেন, পাইথন এটি কার্যকর করে তবে এটি আপনার সমস্ত ভেরিয়েবল দোভাষীর কাছে উপলব্ধ করবে না। আমি খুঁজে পেয়েছি যে আপনি যদি ডায়ালটারের কাছে সমস্ত ভেরিয়েবলগুলি উপলভ্য করতে চান তবে 'মাইকোড আমদানি থেকে' আপনার টাইপ করা উচিত।
শুধু কর,
from my_file import *
.Py এক্সটেনশন যোগ না করার বিষয়টি নিশ্চিত করুন। যদি আপনার .py ফাইলটি উপ-ডিরেক্টরিতে ব্যবহৃত হয়,
from my_dir.my_file import *
পাইথন 3 এর জন্য:
>>> exec(open("helloworld.py").read())
কমান্ড চালানোর আগে নিশ্চিত হয়ে নিন যে আপনি সঠিক ডিরেক্টরিতে রয়েছেন।
ভিন্ন ডিরেক্টরি থেকে একটি ফাইল চালাতে, আপনি নীচের কমান্ডটি ব্যবহার করতে পারেন:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
ধরুন আপনি নিম্নলিখিত বৈশিষ্ট্যগুলি চান:
__name__ == '__main__' সত্য এটি তাই স্ক্রিপ্টগুলি স্ক্রিপ্ট হিসাবে সঠিকভাবে আচরণ করে।exec(open('foo.py').read())বৈশিষ্ট্য 1 ব্যর্থ import fooকৌশল ব্যর্থ বৈশিষ্ট্য 2
উভয় পেতে, আপনার এটি প্রয়োজন:
source = open(filename).read()
code = compile(source, filename, 'exec')
exec(code)