it-swarm-tr.com

Kullanıcı girişi ve komut satırı argümanları

A) kullanıcı girdisini kabul edebilecek bir Python betiğini nasıl alabilirim ve b) komut satırından çalıştırılırsa argümanlarda nasıl okuyabilirim?

465
Teifion

Kullanıcı girişini okumak için cmdmodülünü kolayca bir mini komut satırı yorumlayıcısı (yardım metinleri ve otomatik tamamlama ile) oluşturmak için ve Python 3+ için/- raw_input ( inputNAME_ için deneyebilirsiniz. kullanıcıdan gelen metin satırı.

text = raw_input("Prompt")  # Python 2
text = input("Prompt")  # Python 3

Komut satırı girişleri sys.argv içindedir. Bunu betiğinizde deneyin:

import sys
print (sys.argv)

Komut satırı seçeneklerini ayrıştırmak için iki modül vardır:  optparsename__ (Python 2.7’den beri kullanımdan kaldırıldı, argparseNAME_ yerine) ve getoptNAME_ kullanın. Sadece betiğinize dosya girmek istiyorsanız, fileinputNAME_ 'nin gücünü kullanın.

Python kütüphanesi referansı , arkadaşınız.

416
Antti Rasinen
var = raw_input("Please enter something: ")
print "you entered", var

Veya Python 3 için:

var = input("Please enter something: ")
print("You entered: " + var)
444
lbz

raw_input artık Python 3.x'te mevcut değildir. Ancak raw_input, input olarak yeniden adlandırıldı, bu yüzden aynı işlev var.

input_var = input("Enter something: ")
print ("you entered " + input_var) 

Değişikliğin belgeleri

201
steampowered

Komut satırı değişkenlerini işlemenin en iyi yolu argparse modülüdür.

Kullanıcı girişi almak için raw_input() işlevini kullanın. readline module / 'yi içe aktarırsanız, kullanıcılarınızın çizgi düzenleme ve geçmişi olur.

31
Dave Webb

Ne yaptığınızı bilmiyorsanız input işlevini kullanmamaya dikkat edin. raw_input'den farklı olarak input herhangi bir python ifadesini kabul eder, bu yüzden eval gibi

18
Vhaerun

Bu basit program, kullanıcı girdisini komut satırından nasıl besleyeceğinizi anlamanıza ve geçersiz bir argüman iletme 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ışındaki geçersiz argümanları geçmek

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'>
13
Viswesn

Bir konsoldan/terminalden giriş için 'raw_input' kullanın.

eğer 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ı seçeneklerinin tam olmasını istiyorsanız, optparse modülünü kullanın.

PEV

10
Simon Peverett

Python <2.7 kullanıyorsanız, doc uygulamasının açıkladığı gibi, uygulamanız çalıştırıldığında çağrılan komut satırı argümanlarına bir arabirim oluşturacak optparse uygulamasına ihtiyacınız vardır.

Bununla birlikte, Python ≥2.7'de, optparse kullanımdan kaldırıldı ve yukarıda gösterildiği gibi argparse ile değiştirildi. Dokümanlardan kısa bir örnek ...

Aşağıdaki kod, tamsayıların listesini alan ve toplamı veya en fazla değeri ü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)
9
Matt Olan

3.x sürümü ise, sadece kullanın:

variantname = input()

Örneğin, 8 girmek istersiniz:

x = input()
8

x, 8'e eşit olacaktır, ancak aksi belirtilmedikçe bir dize olacaktır.

Böylece, convert komutunu kullanabilirsiniz:

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
6
CorpseDead

Python Olarak 3.2 2.7, şimdi komut satırı argümanlarını işlemek için argparse vardır.

6
GreenMatt

Python 2'de:

data = raw_input('Enter something: ')
print data

Python 3'te:

data = input('Enter something: ')
print(data)
2
Mark
import six

if six.PY2:
    input = raw_input

print(input("What's your name? "))
1
Will Charlton