শেল স্ক্রিপ্ট: শেল স্ক্রিপ্টের মধ্যে থেকে একটি অজগর প্রোগ্রামটি চালিত করুন


139

আমি উত্তরটি গুগল করার চেষ্টা করেছি তবে কোনও ভাগ্য নেই।

আমাকে আমার ওয়ার্কস সুপার কম্পিউটার ব্যবহার করতে হবে তবে পাইথন স্ক্রিপ্টটি চালানোর জন্য এটি অবশ্যই শেল স্ক্রিপ্টের মাধ্যমে কার্যকর করা উচিত।

উদাহরণস্বরূপ আমি job.shকার্যকর করতে চাইpython_script.py

এই কিভাবে এটি করা সম্ভব?


2
আপনি কি python python_script.pyনিজের শেল স্ক্রিপ্টটি সরিয়ে দেওয়ার চেষ্টা করেছেন ?
ঠাকলা

উম python python_script.py,। অথবা ঠিক ./python_script.pyযদি স্ক্রিপ্টটি শেবাং পায়।

2
@ ডেলানান: ./python_script.py এরও দরকার যে স্ক্রিপ্টটি সম্পাদনযোগ্য
thkala

আপনি ঠিক কি চেষ্টা করেছেন এবং সমস্যা কি? হয় আপনি কোনও গুগল অনুসন্ধানের মতো ভাল কাজ করেন নি, বা এমন অনেক কিছুই আছে যা আপনি আমাদের বলছেন না ...
thkala

3
এটি একটি পুরানো প্রশ্ন তবে সবচেয়ে ভাল / সবচেয়ে সম্পূর্ণ উত্তর হ'ল জোচো ভেক্টর। এটি পড়তে ভুলবেন না।
স্টিল.টনি

উত্তর:


193

অজগর নির্বাহযোগ্য আপনার প্যাথ পরিবেশে পরিবর্তনশীল আপনার স্ক্রিপ্টে যোগ করুন তা নিশ্চিত করুন

python path/to/the/python_script.py

বিবরণ:

  • জব.শ ফাইলের মধ্যে এটি রাখুন
#!/bin/sh
python python_script.py
  • আপনার জন্য স্ক্রিপ্টটি রানযোগ্য হয়ে উঠতে এই আদেশটি কার্যকর করুন: chmod u+x job.sh
  • চালাও এটা : ./job.sh

2
এটি আপনার সিস্টেমে নির্ভর করে। পাইথন 3 ডিফল্ট অজগর রানটাইম হতে পারে, নাও হতে পারে। আপনি চালিয়ে পরীক্ষা python --versionকরতে পারেন, এবং আপনি সংস্করণটি প্রয়োগ করতে পারেন python3 hello.py
জিন-বার্নার্ড জানসেন

এটি ইতিমধ্যে ইনস্টল হওয়া আমদানি যেমন পান্ডার সন্ধান না করে তবে কী করবেন?
ma6565

এর অর্থ আপনি ভুল পাইথন বাইনারি চালু করেছেন বা পরিবেশটি ঠিক নয়। সেক্ষেত্রে আপনার কোনও ভার্চুয়ালেনভকে বসানো উচিত, তারপরে দৌড়াতে হবে source PATH/TO/VENV/bin/activateএবং কল করুনpython python_script.py
জিন-বার্নার্ড জ্যানসেন

আমি অটোমেটারে এটি করার চেষ্টা করছি এবং আমি একটি ত্রুটি পাচ্ছি; /path/to/Python: can't open file '/path/to/script': [Errno 1] Operation not permittedবাশ স্ক্রিপ্টের মধ্যে আমার অজগর কোডটি ইন-লাইনে অন্তর্ভুক্ত করার কোনও উপায় আছে কি?
কিসলিংগার

111

পদ্ধতি 1 - একটি শেল স্ক্রিপ্ট তৈরি করুন:

ধরুন আপনার কাছে অজগর ফাইল রয়েছে এমন hello.py একটি ফাইল তৈরি করুন job.shযা এতে রয়েছে

#!/bin/bash
python hello.py

এটি এক্সিকিউটেবল ব্যবহার করে চিহ্নিত করুন

$ chmod +x job.sh

তারপর এটি চালান

$ ./job.sh

পদ্ধতি 2 (আরও ভাল) - অজগরটি নিজেই খোল থেকে চালান:

আপনার স্ক্রিপ্টটি পরিবর্তন করুন hello.pyএবং এটিকে প্রথম লাইন হিসাবে যুক্ত করুন

#!/usr/bin/env python

এটি এক্সিকিউটেবল ব্যবহার করে চিহ্নিত করুন

$ chmod +x hello.py

তারপর এটি চালান

$ ./hello.py

5
আপনার উত্তরটি আরও পঠনযোগ্য করে তুলতে দয়া করে তা সম্পাদনা করুন। স্ক্রিপ্টের বিষয়বস্তুগুলি কোড হিসাবে চিহ্নিত করতে আপনি উত্তর সম্পাদকটিতে 101010 বোতামটি ব্যবহার করতে পারেন।
থকাল 14

1
আমি সবসময় ভুলবেন #!/usr/bin/env python। আপনার সিস্টেমের জন্য আপনি সঠিক অজগর সংস্করণ + পাথটি উল্লেখ করছেন তা নিশ্চিত করে রাখুন!
স্টিল.নিটনি

10

ইমো, লেখা

python /path/to/script.py

বেশ ভুল, বিশেষত এই দিনগুলিতে। কোন অজগর? python2.6? 2.7? 3.0? 3.1? বেশিরভাগ সময় আপনাকে পাইথন ফাইলের শেবাং ট্যাগে পাইথন সংস্করণ নির্দিষ্ট করতে হবে। আমি ব্যবহার করতে উত্সাহিত করি

#! / usr / bin / env পাইথন 2 # বা পাইথন 2.6 বা পাইথন 3 বা এমনকি পাইথন 3.1
সামঞ্জস্য জন্য।

সেক্ষেত্রে স্ক্রিপ্টটি এক্সিকিউটেবল হওয়া এবং সরাসরি এটির আবেদন করা ভাল better

#! / বিন / ব্যাশ

/path/to/script.py

আপনার অজগরটির সংস্করণটি কেবল একটি ফাইলে লেখা। ব্যবস্থার সবচেয়ে এই দিন ইতিমধ্যে python2 এবং python3 হচ্ছে, আর তাই হয় সিমবলিক লিঙ্ক যে পাইথন পয়েন্ট python3 , যখন অধিকাংশ মানুষ নির্দেশিত আশা python2


1
আপনি কি প্যারামিটারগুলি একইভাবে পাস করতে পারবেন python script.py param?
ক্রিশ্চিয়ান

@ ক্রিশ্চিয়ান হ্যাঁ./abc.py -h

7

নিম্নলিখিত প্রোগ্রামটি সংরক্ষণ করুন print.py:

#!/usr/bin/python3
print('Hello World')

তারপরে টার্মিনালে টাইপ করুন:

chmod +x print.py
./print.py

4

এটি আমার পক্ষে সবচেয়ে ভাল কাজ করে: স্ক্রিপ্টের শীর্ষে এটি যুক্ত করুন:

#!c:/Python27/python.exe

(সি: \ পাইথন 27 \ পাইথন.এক্সই হ'ল আমার মেশিনে পাইথন.এক্সির পথ) তারপর স্ক্রিপ্টটি এর মাধ্যমে চালান:

chmod +x script-name.py && script-name.py

কেবল পরিষ্কার করার জন্য, এটি উইন্ডোজ-নির্দিষ্ট। এবং আমি যে প্রম্পটটি ব্যবহার করি তা হ'ল গিট ব্যাশ। আমি এটি সুপার দরকারী। বিশেষত উইন্ডোজ পরিবেশে
পিটারব

4

এটি আমার পক্ষে কাজ করে:

  1. একটি নতুন শেল ফাইল কাজ তৈরি করুন। সুতরাং আসুন বলা যাক: touch job.shএবং পাইথন স্ক্রিপ্ট চালানোর জন্য কমান্ড যুক্ত করুন (আপনি সেই অজগরটিতে কমান্ড লাইন যুক্তি যুক্ত করতে পারেন, আমি সাধারণত আমার কমান্ড লাইন আর্গুমেন্টগুলি পূর্বনির্ধারিত করি)।

    chmod +x job.sh

  2. ভিতরে job.shনিম্নলিখিত পিআই ফাইল যুক্ত করুন, যাক বলুন:

    python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file.py"

    python_file1.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file1.py"

জব.শ আউটপুট এর মতো দেখতে হবে:

Done with python_file.py

Done with python_file1.py

আমি সাধারণত এটি ব্যবহার করি যখন আমাকে পূর্বনির্ধারিত বিভিন্ন যুক্তিযুক্ত একাধিক পাইথন ফাইল চালাতে হয়।

দ্রষ্টব্য: এখানে কী চলছে তা সম্পর্কে কেবল একটি দ্রুত মাথাব্যথা:

python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "completed with python_file.py" . 

  • এখানে শেল স্ক্রিপ্ট পাইথন_ফিল.পি ফাইলটি চালাবে এবং পাইথন ফাইলে রান সময়ে একাধিক কমান্ড-লাইন যুক্তি যুক্ত করবে।
  • এর অর্থ এই নয় যে আপনাকে কমান্ড লাইন আর্গুমেন্টও পাস করতে হবে।
  • আপনি কেবল এটির মতো ব্যবহার করতে পারেন python python_file.py:, সরল এবং সাধারণ। এরপরে >> >> টেস্টপি-আউটপুট. টেক্সট ফাইলে এই .py ফাইলটির আউটপুট প্রিন্ট করে সংরক্ষণ করবে।
  • && একটি লজিকাল অপারেটর যা উপরের সাফল্যের সাথে সম্পাদিত হওয়ার পরে কেবল চলবে এবং একটি বৈকল্পিক প্রতিধ্বনি হিসাবে "পাইথন_ফাইল.পি দিয়ে সম্পূর্ণ" আপনার রানার সময় আপনার ক্লাইম / টার্মিনালে প্রতিধ্বনিত হবে।

4

আপনি যেমন ডাকা করতে সক্ষম হওয়া উচিত python scriptname.pyযেমন

# !/bin/bash

python /home/user/scriptname.py 

এছাড়াও স্ক্রিপ্ট চালানোর অনুমতি আছে তা নিশ্চিত করুন।

আপনি এটা ব্যবহার করে এক্সিকিউটেবল করতে পারেন chmod u+x scriptname.py



1

যেহেতু অন্যান্য পোস্টগুলি সমস্ত কিছু বলে (এবং নীচের সন্ধানের সময় আমি এই পোস্টে হোঁচট খেয়েছি)।
অন্য পাইথন স্ক্রিপ্ট থেকে পাইথন স্ক্রিপ্ট কার্যকর করার উপায় এখানে রয়েছে:

পাইথন 2:

execfile("somefile.py", global_vars, local_vars)

পাইথন 3:

with open("somefile.py") as f:
    code = compile(f.read(), "somefile.py", 'exec')
    exec(code, global_vars, local_vars)

এবং আপনি কিছু অন্য সরবরাহ করে অর্গ সরবরাহ করতে পারেন sys.argv

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