Bagaimana cara memiliki sebuah script Python yang a) dapat menerima input pengguna dan bagaimana cara membuatnya b) membaca dalam argumen jika dijalankan dari command line?
Untuk membaca input dari pengguna, anda dapat mencoba the cmd
module untuk dengan mudah menciptakan mini-baris perintah penerjemah (dengan bantuan teks dan pelengkapan otomatis) dan raw_input
(input
untuk Python 3+) untuk membaca baris teks dari pengguna.
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Command line input di sys.argv
. Coba ini di script anda:
import sys
print (sys.argv)
Ada dua modul untuk parsing opsi baris perintah: (sudah ditinggalkan sejak Python 2.7, gunakan optparse
argparse
sebaliknya) dan getopt
. Jika anda hanya ingin memasukkan file ke script anda, lihatlah kekuatan dari fileinput
.
The Python referensi perpustakaan adalah teman anda.
raw_input
ini tidak lagi tersedia di Python 3.x. Tapi raw_input
berganti nama menjadi input
, sehingga fungsi yang sama dengan yang ada.
input_var = input("Enter something: ")
print ("you entered " + input_var)
Cara terbaik untuk proses argumen baris perintah adalah argparse
modul.
Gunakan raw_input()
untuk mendapatkan input dari user. Jika anda mengimpor readline modul
pengguna anda akan memiliki garis editing dan sejarah.
Program sederhana ini akan membantu anda dalam memahami cara memberi input pengguna langsung dari baris perintah untuk menampilkan bantuan pada lewat argumen 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
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
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
kemudian anda dapat menggunakan sys.argv...
import sys
print sys.argv
sys.argv adalah daftar di mana 0 adalah nama program, jadi pada contoh di atas sys.argv[1] akan menjadi "file_name.txt"
Jika anda ingin memiliki penuh pada opsi baris perintah yang menggunakan optparse modul.
Pev
Jika anda menjalankan Python <2.7, anda perlu optparse, yang seperti doc menjelaskan akan membuat sebuah antarmuka untuk argumen baris perintah yang dipanggil saat aplikasi dijalankan.
Namun, dalam Python ≥2.7, optparse telah usang, dan digantikan dengan argparse seperti yang ditunjukkan di atas. Contoh singkat dari dokumen...
berikut ini kode Python program yang membutuhkan daftar bilangan bulat dan menghasilkan baik jumlah atau max:
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)
Jika itu's 3.x versi maka hanya cukup menggunakan:
variantname = input()
Misalnya, anda ingin masukan 8:
x = input()
8
x akan sama 8 tetapi itu's akan menjadi string kecuali jika anda menentukan sebaliknya.
Sehingga anda dapat menggunakan perintah convert, seperti:
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07