所以基本上,我正在制作一个密码存储应用程序,但是当我记下用户输入的密码时,python创建了一个空行,这破坏了我的程序。 Heres a picture of it 因此,我需要使程序以某种方式删除第二行,但是我不知道该怎么做。
我需要帮助的部分:
randompasswords = open("randomizedpsw.txt", "r")
choserandomnumber = random.randint(1, 39)
randomizedpassword = randompasswords.readlines()[choserandomnumber]
loginpsw = open('loginpsw.txt', 'w')
loginpsw.write(randomizedpassword)
loginpsw.close()
因此,loginpsw.txt是一个带有另一行的行。这就是我需要以某种方式删除的内容。 Here's a picture of the random password possibilities
答案 0 :(得分:0)
这是因为readlines()
添加了换行符。您可以选择使用rstrip()
,例如:
with open('loginpsw.txt', 'w') as loginpsw: # automatically close file when done
loginpsw.write(randomizedpassword.rstrip('\n')) # strips last new line char
重要的安全说明
随机库不是不是密码安全的,请改为使用secrets
库。
答案 1 :(得分:0)
.readlines()
方法返回一个列表,其中包含文件中的每一行作为列表项。
如果将大小指定为方法的参数,它将读取文件,直到达到指定的字节大小为止。
现在,您在代码的第三行中读取的文件具有某个随机的int值,将返回由\n
分隔的那个字节。
所以
的值 randomizedpassword = randompasswords.readlines()[choserandomnumber]
看起来像["content of line 1\n", "content of line 2\n"]
因此,当您读取文件内容并将其存储在变量中时,就会出现\n
的问题。稍后将相同的内容写入文件。
这是您可以得到想要的东西的方法,请尝试以下方法:
randompasswords = open("randomizedpsw.txt", "r")
choserandomnumber = random.randint(1, 39)
randomizedpassword = randompasswords.readlines()[choserandomnumber]
randomizedpassword = [line.rstrip('\n') for line in randomizedpassword] #if you have fetched multiple lines while reading lines, it will remove \n from all values.
loginpsw = open('loginpsw.txt', 'w')
loginpsw.write(randomizedpassword)
loginpsw.close()
您几乎看不到.readlines(size)
方法返回什么值的示例。
https://www.tutorialspoint.com/python/file_readlines.htm