Bagaimana cara saya memiliki skrip Python yang a) dapat menerima input pengguna dan bagaimana cara membuatnya b) membaca dalam argumen jika dijalankan dari baris perintah?
argparse
bukannya optparse
.
Bagaimana cara saya memiliki skrip Python yang a) dapat menerima input pengguna dan bagaimana cara membuatnya b) membaca dalam argumen jika dijalankan dari baris perintah?
argparse
bukannya optparse
.
Jawaban:
Untuk membaca masukan pengguna Anda dapat mencoba dengan cmd
modul untuk dengan mudah menciptakan garis interpreter perintah mini (dengan bantuan teks dan autocompletion) dan raw_input
( input
untuk Python 3 +) untuk membaca baris teks dari pengguna.
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Input baris perintah ada di sys.argv
. Coba ini di skrip Anda:
import sys
print (sys.argv)
Ada dua modul untuk opsi baris perintah parsing: (ditinggalkan sejak Python 2.7, gunakan optparse
argparse
sebagai gantinya) dan getopt
. Jika Anda hanya ingin memasukkan file ke skrip Anda, lihatlah kekuatan fileinput
.
The Python referensi perpustakaan adalah teman Anda.
var = raw_input("Please enter something: ")
print "you entered", var
Atau untuk Python 3:
var = input("Please enter something: ")
print("You entered: " + var)
raw_input
, ini adalah fungsi bawaan.
raw_input
tidak lagi tersedia di Python 3.x. Tapi raw_input
diganti namanya input
, jadi fungsi yang sama ada.
input_var = input("Enter something: ")
print ("you entered " + input_var)
import fileinput result=[] for line in fileinput.input(): result.append(line)
Cara terbaik untuk memproses argumen baris perintah adalah argparse
modul.
Gunakan raw_input()
untuk mendapatkan input pengguna. Jika Anda mengimpor, readline module
pengguna Anda akan memiliki pengeditan garis dan riwayat.
Program sederhana ini membantu Anda dalam memahami cara memberi makan input pengguna dari baris perintah dan untuk menunjukkan bantuan saat melewati argumen yang tidak valid.
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) Untuk menemukan akar kuadrat dari 5
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
2) Melewati argumen yang tidak valid selain dari angka
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'>
Gunakan 'raw_input' untuk input dari konsol / terminal.
jika Anda hanya ingin argumen baris perintah seperti nama file atau sesuatu misalnya
$ python my_prog.py file_name.txt
maka Anda dapat menggunakan sys.argv ...
import sys
print sys.argv
sys.argv adalah daftar di mana 0 adalah nama program, jadi dalam contoh di atas sys.argv [1] adalah "file_name.txt"
Jika Anda ingin memiliki opsi baris perintah penuh gunakan modul optparse.
Pev
Jika Anda menjalankan Python <2.7, Anda perlu optparse , yang seperti dijelaskan oleh doc akan membuat antarmuka ke argumen baris perintah yang dipanggil saat aplikasi Anda dijalankan.
Namun, dalam Python ≥2.7, optparse telah ditinggalkan, dan diganti dengan argparse seperti yang ditunjukkan di atas. Contoh cepat dari dokumen ...
Kode berikut adalah program Python yang mengambil daftar bilangan bulat dan menghasilkan jumlah atau maks:
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)
Sebagai Python 3.22.7, sekarang ada argparse untuk memproses argumen baris perintah.
Jika ini versi 3.x maka cukup gunakan:
variantname = input()
Misalnya, Anda ingin memasukkan 8:
x = input()
8
x akan sama dengan 8 tetapi itu akan menjadi string kecuali jika Anda mendefinisikannya sebaliknya.
Jadi, Anda dapat menggunakan perintah convert, seperti:
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? "))