স্টিডিনের কাছ থেকে পাসওয়ার্ড পড়ুন


180

পরিস্থিতি: একটি ইন্টারেক্টিভ সি এল এল আই পাইথন প্রোগ্রাম, এটি একটি পাসওয়ার্ডের প্রয়োজন। এর অর্থ এটিও, কোনও জিইউআই সমাধান সম্ভব নয়।

ব্যাশে আমি কোনও পাসওয়ার্ড এর মাধ্যমে স্ক্রিনে পুনরায় প্রম্পট না করে পঠন করতে পারি

read -s

পাইথনের জন্য কি তেমন কিছু রয়েছে? অর্থাত,

password = raw_input('Password: ', dont_print_statement_back_to_screen)

বিকল্প: টাইপ করা অক্ষরগুলিকে স্ক্রিনে ফিরে যাওয়ার আগে (* ব্রাউজার শৈলীতে) '*' দিয়ে প্রতিস্থাপন করুন।

উত্তর:


280
>>> import getpass
>>> pw = getpass.getpass()

3
হ্যাঁ, তাদের ব্যাটারি। ;-) পাইথন সঙ্গে শীতল জিনিস অন্য একটি ভাষায় বাইনেরিতে সঙ্গে সহজে বাঁধে তার ক্ষমতা, বিশেষ সি, অত বিদ্যমান জিনিস অনেক ওঠানামা (যেমন getpass () হিসাবে, আমি বিশ্বাস করি)
mjv

2
আরও ভাল, গেটপাস () সিডিএল সরঞ্জামটি এসটিডিআইএন এর মাধ্যমে ডেটা খাওয়ানো হচ্ছে এবং তারপরে আপনি নিজেই পাসওয়ার্ড টাইপ করার ক্ষমতা চান তা নিয়ে কাজ করে। দুর্দান্ত সরঞ্জাম!
টাইমেন

2
@ টিমেন তবে আমি এখানে এটির সমাধানের সন্ধান করতে এসেছি কারণ গেটপাস () এখনও আমাকে অনুরোধ করছে এবং পাসওয়ার্ডের জন্য অপেক্ষা করছে যদিও আমি আমার স্ক্রিপ্টে পাসওয়ার্ডটি পাইপ করেছি
মাইকেল

1
আমার জন্য, গেটপাস একটি উইন্ডো পপ আপ করেছে (আমি যা চাইছিলাম তা নয় বা এর সাহায্য কী বলেছিল) এবং আমি এটি টাইপ করার সময় পাসওয়ার্ডটি অস্পষ্ট করে রাখি না! পুনরুত্পাদন করার কোড: আমদানি গেটপাস; getpass.getpass ()
মাইকেল

1
তবে এটি '*' এক ধরণের হিসাবে প্রদর্শন করে না। কেউ কীভাবে এটি অর্জন করতে পারে?
জেসন

53

হ্যাঁ getpass: "প্রতিধ্বনিত না করে ব্যবহারকারীকে একটি পাসওয়ার্ডের জন্য অনুরোধ করুন" "

সম্পাদনা: আমি নিজেই এই মডিউলটি নিয়ে খেলিনি, তাই আমি সবেমাত্র রান্না করেছি (যদিও আপনি পুরো জায়গায় একই কোড খুঁজে পান তবে অবাক হবেন না):

import getpass

def login():
    user = input("Username [%s]: " % getpass.getuser())
    if not user:
        user = getpass.getuser()

    pprompt = lambda: (getpass.getpass(), getpass.getpass('Retype password: '))

    p1, p2 = pprompt()
    while p1 != p2:
        print('Passwords do not match. Try again')
        p1, p2 = pprompt()

    return user, p1

(এটি পাইথন ৩.x; পাইথন ২.x ব্যবহার করার raw_inputপরিবর্তে inputব্যবহার করুন)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.