为什么这个变量组合输出2个反斜杠的答案?

时间:2017-10-24 01:03:32

标签: python

我正在尝试编写一个类似于登录计算机的程序,就像您可以创建一个"帐户"并且计算机将记住您的密码以供日后使用。 (所以你不能只使用一个简单的变量)

因此,该程序的工作原理是要求您选择创建帐户或登录。(如果用户选择创建帐户,我已准备好一些代码,但我会在以后添加它签署部分已完成。)我选择存储用户名和密码的方式是使用文本文档。用户名将是文本文档的名称(例如D:\ username.txt),密码将写在文本文档中。

import os
import sys
import fileinput


def signin():
    username = input("Username:\n>>")
    UsernameandPasswordfile = "D:\%s.txt" % username
    password = "Password:\n>>"
    print(UsernameandPasswordfile)
    file = open(UsernameandPasswordfile, "r+")
    for line in fileinput.input(UsernameandPasswordfile):
        if password in line:
            print("signed in!")
        else:
            print("error")

question = input("sign in or create new account?\n>>")
if question == "sign in":
    signin()

以下是错误消息:

FileNotFoundError: [Errno 2] No such file or directory: 'D:\\document.txt'

我有一个名为"文件"的测试文件。所以,如果我使用"文件"来运行我的程序作为我的用户名,它应该找到该文件。但它不是,因为它不断向文件位置添加额外的反斜杠,这当然会使位置错误。我可以改变什么来解决这个问题?

2 个答案:

答案 0 :(得分:0)

从运行它,我没有看到此代码有任何问题。当文件存在时,它工作正常。确保文件存在,并且您正在查看正确的驱动器。

答案 1 :(得分:0)

检查评论后,您的问题是要求检查D:\中的文件是否存在,但您是否在桌面上创建该文件。这是两个不同的地方。

桌面不位于硬盘驱动器的根目录,例如 D:\ 。桌面通常位于 D:\ Users \ CJPeine \ Desktop (取决于您的用户),因此您需要先找到桌面所在的位置。

查找.txt所在位置(文件的常见路径)的更简单方法是右键单击文件并选择“属性”选项。在那里找到路径或位置信息。

然后你只需要更改下一行就能准确找到文件。

UsernameandPasswordfile = "D:\Users\CJPeine\Desktop\%s.txt" % username

反斜杠:
但是,这会产生问题。某些字符如\n\t(以及其他字符)会创建特殊行为,这就是我们需要转义它们的原因。例如\n添加一个新行,如果你写:

"this is a te\nst"

结果是:

this is a t
est

因此,为了解决这个问题,我们通过添加双反斜杠而不是一个反斜杠来逃避这些字符。添加它几乎意味着不要试图为我的反斜杠找到特殊行为"。最后,工作代码是。

UsernameandPasswordfile = "D:\\Users\\CJPeine\\Desktop\\%s.txt" % username