Saya menggunakan python untuk membuat pengaturan pengaturan proyek saya, tetapi saya butuh bantuan untuk mendapatkan argumen baris perintah.
Saya mencoba ini di terminal:
$python myfile.py var1 var2 var3
Dalam file Python saya, saya ingin menggunakan semua variabel yang diinput.
python
command-line
ParisNakitaKejser
sumber
sumber
Jawaban:
Tutorial Python menjelaskannya :
Lebih khusus lagi, jika Anda menjalankan
python example.py one two three
:sumber
akan memberi Anda daftar argumen (tidak termasuk nama file python)
sumber
[1:]
artinya[1:]
ke atas karena argumen pertamasys.argv
adalah secara default nama file python yang Anda jalankan misalnyatestrun.py
.Saya sangat merekomendasikan
argparse
yang datang dengan Python 2.7 dan yang lebih baru.The
argparse
Modul mengurangi kode pelat ketel dan membuat kode Anda lebih kuat, karena modul menangani semua kasus penggunaan standar (termasuk subcommands), menghasilkan bantuan dan penggunaan untuk Anda, cek dan membersihkan input pengguna - semua hal yang Anda harus khawatir tentang kapan Anda sedang menggunakansys.argv
pendekatan. Dan itu gratis (built-in).Berikut contoh kecil:
dan output untuk
python prog.py -h
dan untuk
python prog.py 1
seperti yang Anda harapkan:sumber
parser.add_argument('var3', nargs='?', type=int, default=3)
var3 adalah param opsional, jika Anda tidak menentukan nilai di baris perintah Anda dapat mengakses ke var3 dalam kode Anda, nilai default untuk var3 = 3Kode python:
Doa:
Keluaran:
sumber
Anda dapat menggunakan
sys.argv
untuk mendapatkan argumen sebagai daftar.Jika Anda perlu mengakses elemen individual, Anda bisa menggunakannya
Di mana
i
indeks,0
akan memberi Anda nama file python dieksekusi. Indeks apa pun setelah itu adalah argumen yang lolos.sumber
Jika Anda menyebutnya seperti ini:
$ python myfile.py var1 var2 var3
Mirip dengan array yang juga Anda miliki,
sys.argv[0]
yang selalu merupakan direktori kerja saat ini.sumber
sys.argv[0]
bukan direktori kerja saat ini. Ini adalah nama file yang dieksekusi.Beberapa hal tambahan yang bisa saya pikirkan.
Seperti @allsyed berkata sys.argv memberikan daftar komponen (termasuk nama program), jadi jika Anda ingin tahu jumlah elemen yang dilewatkan melalui baris perintah Anda dapat menggunakan len () untuk menentukannya. Berdasarkan ini, Anda dapat merancang pesan pengecualian / kesalahan jika pengguna tidak melewati sejumlah parameter tertentu.
Juga jika Anda mencari cara yang lebih baik untuk menangani argumen baris perintah, saya sarankan Anda melihat https://docs.python.org/2/howto/argparse.html
sumber