گرفتن ورودی از کاربر با متد input و ماژول getpass پایتون

January 2022

بسیاری از برنامه‌هایی که از طریق ترمینال با کاربر در تعامل هستند، باید از کاربر رمز عبور را بدون نشان دادن آنچه کاربر روی صفحه تایپ می‌کند، دریافت کنند. ماژول getpass پایتون این امکان را به برنامه می دهد تا رمز عبور را بدون نمایش آن بر روی صفحه نمایش درخواست کند. این ماژول یک راه امن و مستقل برای واکشی رمزهای عبور از خط فرمان ارائه می دهد.

 

اما قبل از اینکه به سراغ ماژول getpass برویم،‌ بهتر از با متد input پایتون آشنا شویم.

 

دوره پیشنهادی: دوره آموزش رایگان پایتون

 

 #  دریافت ورودی از کاربر با متد input پایتون

برای گرفتن ورودی از کاربر در پایتون باید از متد input استفاده کنید. ورودی کاربر به شکل یک string دریافت شده و در یک متغیر ذخیره میشود. در زمان استفاده از متد input برنامه متوقف شده و تا زمان فشردن کلمه Enter صبر میکند.

 

متد input یک آرگومان به نام prompt گرفته که پیغامی است که میخواهید به کاربر نمایش دهید.

 

به طور مثال در کد زیر، سن کاربر را گرفته و در کنسول نمایش میدهیم:

age = input('Enter you age: ')
print(age)

 

اگر کد بالا را اجرا کنید، برنامه یک پیغام نمایش داده و تا زمان ورود سن صبر میکند. بعد از گرفتن ورودی، آن را در صفحه کنسول نمایش میدهد:

(venv) amir@big:~/Desktop/python$ python two.py 
Enter you age: 20
20

 

دقت کنید که متد input مقدار ورودی را به شکل string ذخیره میکند. در نتیجه عددی که در بالا وارد کردید به شکل یک رشته ذخیره شده است:

age = input('Enter you age: ')
print(type(age))

# OUTPUT
Enter you age: 20
<class 'str'>

 

اگر بخواهید نوع ورودی را تغییر دهید، باید از متدهای تغییر نوع داده پایتون استفاده کنید. مثلا اگر میخواهید ورودی کاربر را به نوع عددی تغییر دهید، میتوانید از متد int استفاده کنید:

age = int(input('Enter you age: '))
print(age)
print(type(age))

# OUTPUT
Enter you age: 12
12
<class 'int'>

 

 

 +  دریافت چند ورودی با input پایتون

متد input فقط برای گرفتن یک ورودی از کاربر طراحی شده است. اگر بخواهید همزمان چند ورودی از کاربر بگیرید، باید از متد split در کنار متد input استفاده کنید. متد split برای تکه کردن یک ورودی استفاده میشود.

 

به طور مثال در کد زیر، همزمان از کاربر نام و سن را درخواست کرده ایم. بعد از متد input از متد split استفاده کرده ایم. متد split به طور پیشفرض از فاصله به عنوان جدا کننده استفاده خواهد کرد. به این معنی که در ورودی، هر جایی که کاراکتر فاصله وجود داشته باشد، آن را تکه خواهد کرد:

name, age = input('Enter you name and age: ').split()
print(name)
print(age)

 

اگر کد بالا را اجرا کنید، دو مقدار نام و سن را از شما درخواست خواهد کرد:

Enter you name and age: amir 20
amir
20

 

در متد split میتوانید جداکننده را از حالت پیشفرض تغییر داده و کاراکتر دیگری را به عنوان جدا کننده مشخص کنید:

Enter you name and age: amir , 20
amir 
20

 

در مثال بالا از کاراکتر کاما به عنوان جدا کننده استفاده کردیم.

 

 

 #  گرفتن ورودی از کاربر با ماژول getpass پایتون

ماژول getpass کوچکترین ماژولی است که در پایتون وجود دارد. این ماژول برای گرفتن ورودی از کاربر به شکل امن استفاده میشود. در این ماژول دو متد و یک exception وجود دارد. با استفاده از ماژول getpass ورودی کاربر در زمان تایپ نمایش داده نخواهد شد.

 

 

 +  متد getuser

این متد نام کاربری که در حال حاضر در سیستم ورود کرده است را نمایش میدهد. متد getuser از متغیرهای محیطی که در سیستم عامل وجود دارد استفاده میکند:

import getpass
print(getpass.getuser())

# OUTPUT
amir

 

این متد به ترتیب متغیرهای محیطی LOGNAME, USER, LNAME و USERNAME را میگردد و هر متغیری که در خود مقدار داشته باشد، آن را چاپ میکند.

 

 

 +  متد getpass

متد getpass همانند متد input عمل کرده و یک ورودی را از کاربر میگیرد. با این تفاوت که در زمان تایپ ورودی توسط کاربر آن را نمایش نمیدهد:

import getpass
password = getpass.getpass('Enter password: ')
print(f'Your password: {password}')

# OUTPUT
python two.py 
Enter password: ****
Your password: amir

 

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم

mohammad

May 2022

تویه ویندوز هم مثل لینوکس هست و ستاره نشون نمیده

پاسخ به نظر


em

January 2022

کامند source چیکار میکنه ؟
پ . ن : استاد تو ویندوز امتحان کردم مثل لینوکس بود ، ستاره اینا نبود.
ممنون ، عالی بود.

پاسخ به نظر


امیرحسین بیگدلو

January 2022

دستور source لینوکس محتویات یک فایل رو میخونه و اجرا میکنه