相关疑难解决方法(0)

从stdin读取密码

场景:交互式CLI Python程序,需要密码.这也意味着,没有可能的GUI解决方案.

在bash中,我可以在不通过屏幕重新提示的情况下读取密码

read -s
Run Code Online (Sandbox Code Playgroud)

Python有类似的东西吗?也就是说,

password = raw_input('Password: ', dont_print_statement_back_to_screen)
Run Code Online (Sandbox Code Playgroud)

替代方法:在将类型字符发送回屏幕(又称浏览器样式)之前,将其替换为"*".

python passwords interactive prompt

178
推荐指数
2
解决办法
7万
查看次数

如何使用Tkinter创建密码输入字段

我正在尝试使用Tkinter编写登录窗口,但我无法以星号格式隐藏密码文本.这意味着密码输入是纯文本,必须避免.知道怎么做吗?

python tkinter

34
推荐指数
4
解决办法
5万
查看次数

如何在python中完成密码输入,并为用户的每个字符打印星号?

据我所知,此问题之前已被提出,但仍然缺乏答案.所以我再次提出这个问题,以便最终得到这个问题的答案.(如果我错了,请给我答案的网址.)

问题:程序员希望用户输入密码.在将getpass()函数就是为了这个目的很好,但它的使用有一个缺点:当输入密码没有打印到标准输出.

问题:如何在为用户键入的每个字符打印星号时实现getpass()?(当然,退格 -甚至是POS1结束 -应采取相应的照顾.)

动机:社区中有人不理解为什么要问这个问题.然后用a)引用getpass(),这样忽略了手头的任务,b)没有考虑那个引用不会回答问题.之所以可能希望打印星号是为了方便用户:他们在密码输入期间获得直接的视觉响应.因此,他们不会因按键而感到困惑,而且 - 在那里 - 似乎没有任何事情发生.

迈向解决方案的一步:

让我在这里向解决方案迈出第一步.请帮忙,以便将其演变成真正的解决方案.

有一个名为getch的模块似乎允许从stdin逐字符读取.Backspace非常奇怪地映射到127的整数值,但是这样的解决方案可能如下所示:

def readLineWithAsterisks():
    sBuffer = ''
    while True:
        c = getch.getch()
        if c == '\n':
            return sBuffer
        elif ord(c) == 127:
            if len(sBuffer) > 0:
                sys.stdout.write('\x08 \x08')
                sys.stdout.flush()
                sBuffer = sBuffer[0:-1]
            continue
        else:
            sys.stdout.write('*')
            sys.stdout.flush()
            sBuffer += c
Run Code Online (Sandbox Code Playgroud)

但是这段代码有一些缺点.首先,我非常困惑c如果进入退格,则不是'\ b' .也许这样有解释?仅处理第二个ASCII字符,至少在Linux上是这样.我在这里不了解Windows,但如果按下A-Z0-9以外的字符,则行c = getch.getch()将抛出异常. …

python security passwords console command-line

22
推荐指数
2
解决办法
6270
查看次数

隐藏raw_input()密码输入

我想隐藏我的密码,但我不知道如何.我已经看到了show="*",getpass但我不知道如何将它们放入此代码中.我正在使用Python 2.7.3并在Raspberry Pi上编码.

ans = True

while ans:
    print("""
                   -------------
                  | 1. Shutdown | 
                  | 2. Items    |
                   -------------
    """)

    ans=raw_input("""

             Please Enter A Number: """)

    if ans == "1":

        exit()
    elif ans == "2":


        pa=raw_input("""

             Please Enter Password: """)

        if pa == "zombiekiller":

            print("""
                   ----------------
                  | 1. Pi password |
                  | 2. Shutdown    |
                   ----------------
            """)

            pe=raw_input ("""

             Please Enter A Number: """)

            if pe == "1":
                print ("""

             Pi's Password Is Adminofpi""")
                import time …
Run Code Online (Sandbox Code Playgroud)

python raw-input masking

19
推荐指数
1
解决办法
4万
查看次数

如何在输入密码时将密码转换为星号?

有没有一种方法可以在用户输入星号时转换字符,就像在许多网站上看到的那样?

例如,如果要求电子邮件用户登录其帐户,则在输入密码时,它不会显示为字符,而是显示*在每个单独的笔划之后,没有任何时间延迟.

如果是实际密码KermitTheFrog,则会*************在输入时显示.

python

13
推荐指数
3
解决办法
2万
查看次数

如何将密码回显为星号

我试图弄清楚如何提示输入密码,并将用户输入回显为星号(********)

最近,我开始创建一个可以连接到使用Python中的套接字模块的远程服务器的项目.它还没有完成,因为我正在使控制台用于连接服务器.

我正在尝试创建一个登录窗口,提示用户输入用户名和密码,但输入密码时我正在寻找要打印的星号,就像常见的密码输入一样(即 - Sekr3t被回复为:******).

经过几天的研究,我差不多完成了仍然有一个最后的错误,让我疯了(我完全无法解决它).注意 - 我知道有一个getpass模块可以用来替换它,更容易,但没有回声不是我正在寻找的.

这是我到目前为止的密码登录代码,我无法弄清楚为什么它不会回响星号:

import msvcrt
import sys

def login(prompt = '> '):
   write = sys.stdout.write

   for x in prompt:
       msvcrt.putch(x)
   passw = ""

   while 1:
       x = msvcrt.getch()
       if x == '\r' or x == '\n':
           break
       if x == '\b':
           # position of my error
           passw = passw[:-1]
       else:
           write('*')
           passw = passw + x
   msvcrt.putch('\r')
   msvcrt.putch('\n')
   return passw
Run Code Online (Sandbox Code Playgroud)

>

如果您通过代码阅读和/或通过IDLE之类的内容运行它,您可能会注意到当用户后退空间时,存储的数据被一个字符擦除,但打印的星号不是.ie - Sekr3t + backspace = Sekr3,但是******留下了回音.任何关于如何在输入退格时擦除最后一个星号的帮助将不胜感激.另请注意,很多此代码来自getpass模块.我知道这不是一个很好的解释,可能不是那么好的代码,但我还在学习 - 请耐心等待.

python passwords msvcrt getch echo

8
推荐指数
1
解决办法
9371
查看次数

从受密码保护的Excel文件到pandas DataFrame

我可以使用以下命令打开受密码保护的Excel文件:

import sys
import win32com.client
xlApp = win32com.client.Dispatch("Excel.Application")
print "Excel library version:", xlApp.Version
filename, password = sys.argv[1:3]
xlwb = xlApp.Workbooks.Open(filename, Password=password)
# xlwb = xlApp.Workbooks.Open(filename)
xlws = xlwb.Sheets(1) # counts from 1, not from 0
print xlws.Name
print xlws.Cells(1, 1) # that's A1
Run Code Online (Sandbox Code Playgroud)

我不确定如何将信息传递给pandas数据帧.我是否需要逐个读取单元格,或者是否有方便的方法来实现?

python excel pandas

8
推荐指数
3
解决办法
1万
查看次数

使用星号掩盖python中的用户输入

我试图用星号掩盖用户输入IDLE的内容,这样他们周围的人就无法看到他们输入/输入的内容.我正在使用基本的原始输入来收集他们输入的内容.

key = raw_input('Password :: ')
Run Code Online (Sandbox Code Playgroud)

用户输入密码后理想的IDLE提示:

Password :: **********
Run Code Online (Sandbox Code Playgroud)

python passwords raw-input masking

8
推荐指数
2
解决办法
1万
查看次数

从IDLE运行时,"GetPassWarning:无法控制终端上的回显"

当我运行此代码时:

import getpass

p = getpass.getpass(prompt='digite a senha\n')
if p == '12345':
    print('YO Paul')
else:
    print('BRHHH')
print('O seu input foi:', p) # p = seu input
Run Code Online (Sandbox Code Playgroud)

我收到了这个警告:

Warning (from warnings module):
   File "/usr/lib/python3.4/getpass.py", line 63
    passwd = fallback_getpass(prompt, stream)
GetPassWarning: Can not control echo on the terminal. Warning: Password input may be echoed.
Run Code Online (Sandbox Code Playgroud)

python python-3.x

7
推荐指数
2
解决办法
2万
查看次数

python getpass密码输入带星号

如何在python中使用getpass模块输入密码时获得星号?

实际结果:

import getpass                                                                       

p=getpass.getpass("Enter the Password:")

Enter the Password:

print (p)

Output: password
Run Code Online (Sandbox Code Playgroud)

期待结果:

import getpass                                                                       

p=getpass.getpass("Enter the Password:")

Enter the Password:********

print (p)

Output: password
Run Code Online (Sandbox Code Playgroud)

Python 版本:2.7

python python-2.7

5
推荐指数
0
解决办法
5498
查看次数