পাইথনে কমান্ড লাইন যুক্তিগুলি কীভাবে অ্যাক্সেস করব?


362

আমি আমার প্রকল্পের সেটিংস সেটআপ তৈরি করতে পাইথন ব্যবহার করি তবে কমান্ড লাইনের যুক্তি পেতে আমার সহায়তা দরকার।

আমি টার্মিনালে চেষ্টা করেছি:

$python myfile.py var1 var2 var3

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


1
পাইকার কমান্ড লাইন অ্যাপ্লিকেশন লেখার জন্য বেকার মডিউল একটি দুর্দান্ত সরঞ্জাম। pypi.python.org/pypi/Baker/1.02
স্পাইক গ্রোনিম

উত্তর:


502

পাইথন টিউটোরিয়াল এটি ব্যাখ্যা করে :

import sys

print(sys.argv)

আরও সুনির্দিষ্টভাবে, আপনি যদি চালান python example.py one two three:

>>> import sys
>>> print(sys.argv)
['example.py', 'one', 'two', 'three']

7
ট্যাঙ্ক, তবে এখন আমার আমার ব্যবহারের ভার 1 ব্যবহার করা দরকার? এখানে কী ঘটে .. :)
প্যারিসনকিটা কেজার

102
দোহ, পেয়েছেন (sys.argv [1]): ডি
প্যারিসনকিটা কেজেসার

115
import sys

sys.argv[1:]

আপনাকে আর্গুমেন্টের একটি তালিকা দেবে (পাইথন ফাইলের নাম সহ নয়)


5
কী [1:]মানে?
কলব ক্যানিয়ন

8
@ কলবক্যানিয়ন এর অর্থ "সূচী 1 থেকে শেষ অবধি শুরু হওয়া সাবলিস্টটি গ্রহণ করুন", অর্থাৎ প্রথম উপাদানটি এড়িয়ে যান
কামিল জারোস

@ কলবক্যানিয়ন দ্বিতীয় যুক্তিটিকে [1:]উপরের দিকে নিয়ে যান কারণ প্রথম যুক্তিটি sys.argvউদাহরণস্বরূপ আপনি যে অজগর ফাইলটি চালাচ্ছেন তার নাম ডিফল্টরূপে testrun.py
স্যামুয়েল এনডি

94

argparseপাইথন ২.7 এবং তারপরে যা আসে তা আমি উচ্চভাবে সুপারিশ করি ।

argparseমডিউল, কারণ মডিউল (subcommands সহ) সব মান ব্যবহারের ক্ষেত্রে পরিচালনা বয়লার প্লেট কোড হ্রাস করে এবং আপনার কোড আরো জোরালো করে তোলে, তোমার জন্য সাহায্য ও ব্যবহার উত্পন্ন, চেক এবং ব্যবহারকারীর ইনপুট sanitize - সব যে জিনিস নিয়ে আপনি যখন আপনি সম্পর্কে চিন্তা করতে হবে ব্যবহার করছেনsys.argv পদ্ধতির । এবং এটি নিখরচায় (অন্তর্নির্মিত)।

এখানে একটি ছোট উদাহরণ:

import argparse

parser = argparse.ArgumentParser("simple_example")
parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int)
args = parser.parse_args()
print(args.counter + 1)

এবং আউটপুট জন্য python prog.py -h

usage: simple_example [-h] counter

positional arguments:
  counter     counter will be increased by 1 and printed.

optional arguments:
  -h, --help  show this help message and exit

এবং python prog.py 1যেমনটি আপনি প্রত্যাশা করবেন:

2

7
গুণমানের উত্তর, এখানে কেন কেউ এখানে প্রদত্ত অন্যান্য পদ্ধতির কোনও ব্যবহার করতে পারে তা নিশ্চিত নয়। এটি নির্মিত হয়েছে বিশেষত ! আপনার ছেলেরা পার্সিংয়ের চেয়ে আরও ভাল কিছু করতে পারে না?
বেসিনেটর

আরগস নেমস্পেসে আপনার কীভাবে নির্দিষ্ট যুক্তিটি অ্যাক্সেস করা উচিত তা কেবল উল্লেখ করার জন্য: args.counter
মাইকএল

1
@ বাসিনেটর ক্ষেত্রে যখন যুক্তিগুলির বিশ্লেষণের প্রয়োজন হয় না।
ক্রিয়াকলাপ হ্রাস

কমান্ড লাইনে নির্দিষ্ট মান ব্যতীত ডিফল্ট মান ব্যবহার করতে, আপনি যেমন ব্যবহার করতে পারেন: parser.add_argument('var3', nargs='?', type=int, default=3)var3 একটি alচ্ছিক প্যারাম, যদি আপনি কমান্ড লাইনে কোনও মান নির্দিষ্ট না করেন তবে আপনি আপনার কোডে var3 এ অ্যাক্সেস করতে পারবেন, var3 এর জন্য ডিফল্ট মান = 3
আলবিકોকো

56

পাইথন কোড:

import sys

# main
param_1= sys.argv[1] 
param_2= sys.argv[2] 
param_3= sys.argv[3]  
print 'Params=', param_1, param_2, param_3

আবাহন:

$python myfile.py var1 var2 var3

আউটপুট:

Params= var1 var2 var3 

24

আপনি sys.argvএকটি তালিকা হিসাবে আর্গুমেন্ট পেতে ব্যবহার করতে পারেন ।

আপনার যদি স্বতন্ত্র উপাদানগুলির অ্যাক্সেসের প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন

sys.argv[i]  

iসূচকটি কোথায় , 0আপনাকে মৃত্যুদন্ড কার্যকর করার জন্য পাইথন ফাইলের নাম দেবে। তারপরে যে কোনও সূচক আর্গুমেন্ট পাস হয়।


6

আপনি যদি এটিকে কল করেন: $ python myfile.py var1 var2 var3

import sys

var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]

অ্যারেগুলির মতো আপনারও রয়েছে sys.argv[0]যা সর্বদা বর্তমান কার্যক্ষম ডিরেক্টরি।


6
sys.argv[0]বর্তমান চলমান ডিরেক্টরি নয়। এটি চালানো ফাইলটির নাম।
বর্ণন

5

কিছু অতিরিক্ত বিষয় যা আমি ভাবতে পারি।

যেমন_আলসাইড বলেছেন যে sys.argv উপাদানগুলির একটি তালিকা দেয় (প্রোগ্রামের নাম সহ), সুতরাং আপনি যদি কমান্ড লাইনের মধ্য দিয়ে যে উপাদানগুলির সংখ্যাটি জানতে চান আপনি এটি নির্ধারণ করতে লেন () ব্যবহার করতে পারেন। এর ভিত্তিতে, ব্যবহারকারী নির্দিষ্ট পরামিতিগুলি পাস না করে আপনি ব্যতিক্রম / ত্রুটি বার্তাগুলি ডিজাইন করতে পারেন।

এছাড়াও যদি আপনি কমান্ড লাইন আর্গুমেন্টগুলি পরিচালনা করার জন্য আরও ভাল উপায়ের সন্ধান করেন তবে আমি আপনাকে https://docs.python.org/2/howto/argparse.html দেখার পরামর্শ দিচ্ছি

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