Python将用户输入的文件名传递给open

时间:2017-06-04 18:59:50

标签: python input filenames

我不明白为什么这么简单的东西不是很直观。

这是我到目前为止所做的:

    print("Enter name of file on Desktop:")
    filename = sys.stdin.readline()


    directory = os.path.join(os.path.expanduser("~"),"Desktop")
        for subdir, dirs, files in os.walk(directory):
            for file in files:
                if file.startswith(filename):
                    f = open(os.path.join(subdir, file),'r+', encoding="Latin-1")
                    data = f.read()
                    print(data)
                    f.close()

为什么我不能传递分配给变量filename的sys.stdin 到'if'陈述:

   `if file.startswith(filename):`? 

我试过了:

    if file.startswith(str(filename)):
    if file.startswith("'" + filename + "'")
    if file.startswith(filename):

没有选项似乎“通过”并且没有错误弹出。

它只是假装我没有通过任何东西。有帮助吗?感谢。

1 个答案:

答案 0 :(得分:2)

无论是从stdin还是从文件读取的行,都包含换行符。您的文件名似乎不太可能以换行符结尾。

但请勿使用sys.stdin.readline从用户那里获取输入。使用适当命名的input函数:

filename = input("Enter name of file on Desktop:")

(注意,在Python 2.x中,您应该使用raw_input而不是input。)