2017-06-04 90 views
0

我不明白爲什麼這樣簡單的事情不是很直觀。Python傳遞用戶輸入的文件名稱來打開

這是我到目前爲止有:

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() 

爲什麼我不能傳遞被分配到變量名 到sys.stdin的「如果」聲明:

`if file.startswith(filename):`? 

我想:

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

沒有選擇似乎「經歷」,並沒有錯誤彈出。

它只是假裝我沒有通過任何事情。任何幫助?謝謝。

+0

格式代碼:使用適當命名input功能(注意,在Python 2.x的,你應該使用raw_input而非input)。只對代碼的小塊使用反引號。 – Carcigenicate

+0

此外,任何時候你得到錯誤,你需要發佈他們 – Carcigenicate

回答

2

無論是從stdin還是從文件讀取的行都包含一個換行符。你的文件名似乎不太可能以換行符結束。

但是不要使用sys.stdin.readline從用戶那裏獲得輸入。由四個空格縮進

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

+0

我知道這是愚蠢的。謝謝。我得到它的工作。 –