A) kullanıcı girişini kabul edebilecek bir Python betiğim var ve b) komut satırından çalıştırıldığında bağımsız değişkenlerde okumayı nasıl sağlayabilirim?
argparse
yerine optparse
.
A) kullanıcı girişini kabul edebilecek bir Python betiğim var ve b) komut satırından çalıştırıldığında bağımsız değişkenlerde okumayı nasıl sağlayabilirim?
argparse
yerine optparse
.
Yanıtlar:
Kullanıcı girişini okumak için cmd
modülü kolayca bir mini komut satırı yorumlayıcısı (yardım metinleri ve otomatik tamamlama ile) oluşturmak ve raw_input
( input
Python 3+ için) kullanıcıdan bir metin satırı okumak için deneyebilirsiniz .
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Komut satırı girişleri sys.argv
. Senaryonuzda deneyin:
import sys
print (sys.argv)
Komut satırı seçeneklerini ayrıştırmak için iki modül vardır: (Python 2.7'den beri kullanımdan kaldırılmıştır, optparse
argparse
bunun yerine kullanın) ve getopt
. Betiğinize yalnızca dosya girmek istiyorsanız, gücüne bakın fileinput
.
Python kütüphanesi referans arkadaşın.
var = raw_input("Please enter something: ")
print "you entered", var
Veya Python 3 için:
var = input("Please enter something: ")
print("You entered: " + var)
raw_input
, bu yerleşik bir işlevdir.
raw_input
artık Python 3.x'te mevcut değil. Ancak raw_input
yeniden adlandırıldı input
, bu yüzden aynı işlevsellik var.
input_var = input("Enter something: ")
print ("you entered " + input_var)
import fileinput result=[] for line in fileinput.input(): result.append(line)
Komut satırı bağımsız değişkenlerini işlemenin en iyi yolu argparse
modüldür.
raw_input()
Kullanıcı girişi almak için kullanın . İçe aktarırsanız readline module
kullanıcılarınız satır düzenleme ve geçmişe sahip olur.
Bu basit program, kullanıcı girişini komut satırından nasıl besleyeceğinizi ve geçersiz argümanı geçirme konusunda yardım göstermenize yardımcı olur.
import argparse
import sys
try:
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",
type=int)
args = parser.parse_args()
#print the square of user input from cmd line.
print args.square**2
#print all the sys argument passed from cmd line including the program name.
print sys.argv
#print the second argument passed from cmd line; Note it starts from ZERO
print sys.argv[1]
except:
e = sys.exc_info()[0]
print e
1) 5'in karekökünü bulmak
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
2) Sayı dışında geçersiz argüman iletme
C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
<type 'exceptions.SystemExit'>
Bir konsoldan / terminalden giriş için 'raw_input' komutunu kullanın.
sadece bir dosya adı veya benzeri bir komut satırı argümanı istiyorsanız
$ python my_prog.py file_name.txt
o zaman sys.argv kullanabilirsiniz ...
import sys
print sys.argv
sys.argv, 0'ın program adı olduğu bir listedir, bu nedenle yukarıdaki örnekte sys.argv [1] "dosya_adı.txt" olur
Komut satırında tam seçeneklere sahip olmak istiyorsanız, optparse modülünü kullanın.
PEV
Python <2.7 çalıştırıyorsanız , doc açıkladığı gibi uygulamanız çalıştırıldığında çağrılan komut satırı argümanlarına bir arayüz oluşturacak olan optparse'a ihtiyacınız vardır.
Bununla birlikte, Python ≥2.7'de optparse kullanımdan kaldırılmıştır ve yukarıda gösterildiği gibi argparse ile değiştirilmiştir . Dokümanlardan kısa bir örnek ...
Aşağıdaki kod, tamsayıların listesini alan ve toplamı veya maks'i üreten bir Python programıdır:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
3.x sürümü ise, sadece şunu kullanın:
variantname = input()
Örneğin, 8 girmek istiyorsunuz:
x = input()
8
x, 8'e eşit olacaktır, ancak başka türlü tanımlamanız dışında bir dize olacaktır.
Convert komutunu kullanabilirsiniz, örneğin:
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
import six
if six.PY2:
input = raw_input
print(input("What's your name? "))