2016-08-13 84 views
0

新的Python 2.7用戶。我剛開始學習字典並詢問用戶輸入,以便我可以編寫一些代碼來練習操作字典,如簡單的數學計算。要求用戶從他們的計算機輸入文件

我能夠手動要求用戶輸入一些諸如:

fav_numbs = (raw_input("What is your favorite car and color?: ")) 

我想獲得用戶的字典中的信息。而不是要求用戶手動輸入他們喜歡的汽車和那輛車的顏色,我希望他們從他們的計算機中導入他們自己的文件。到目前爲止,我已經想出了:

fav_cars = raw_input('Enter file name that contains your favorite cars and color. The file must have the first column as favorite cars and a second column includes your favorite color of that particular car: ') 
myfile = open(fav_cars, 'r') 

我假設用戶可以只是把文件名相同的方式,一個可以輸入一個文件到他們的Python代碼?我知道如果python文件和被導入的文件在同一個文件夾中,所需要的只是文件名。

我的下一組的代碼包括:基於當我想輸入一個文件到我的代碼自己

if __name__ == "__main__": 
Testfilename = '????' #this is what I do not know what to put in my code! 
fav_cars_dict = {} 
path = open(Testfilename) 

,我只想把我哪裏有上面的問號的文件名。如果我不知道用戶將要加入的文件的名稱,我在這裏放什麼?在此之後,我沒有包含代碼,但是如果需要幫助解決問題的話。我剛剛使用for-loops將文件轉換爲字典,方法是用一個文件填充問號,該文件在我創建的一列中包含10組數字。

+0

也許你正在尋找'None' – Ejaz

+0

不,那是行不通的。 –

回答

0

要有輸入參數,請使用sys python庫。添加到文件

import sys 
import os 

if __name__ == "__main__": 
    test_dir_name = os.getcwd() # Current directory 
    test_file_name = sys.argv[1] # Get the first input argument 
    path = open(os.path.join(test_dir_name, test_file_name)) 

如果上面的文件被命名爲PythonDictReader.py,您可以執行使用

python PythonDictReader.py file_name 
+0

我試過這個使用從我的電腦中存儲在python文件相同的文件夾中的文件名。我得到的錯誤代碼是:Testfilename = sys.argv [1]#獲取第一個輸入參數 IndexError:列表索引超出範圍 –

+0

您是如何執行代碼的?請注意我的代碼中的變量名稱更改。 –

0

假設這是在命令行上運行的,您需要使用​​從用戶獲取文件路徑,而不是raw_input。但無論如何,你不應該擔心用戶從哪裏導入文件。由相對路徑和絕對路徑指定的文件實際上以相同的方式處理。所以你的「???」仍然是fav_cars。如果你真的好奇,os.path.abspath(路徑)將爲你提供用戶輸入的任何有效路徑的絕對路徑。

+0

我從未聽說過或曾經使用過argparse。我用raw_input完成了我的簡單代碼。我將無法使用raw_input從用戶調用文件嗎? –

相關問題