2014-10-02 175 views
1

所以我试图创建一个函数,它将打开一个文本文件,逐行读取它,然后从它中获取数据以创建一个列表。Python:从文件创建一个列表

def file_open(): 
    filename = str(input("enter file name for perk.py to sort through")) 
    fob = open(str(filename), 'r') 
    theList = [] 
    for line in fob: 
     if not line: 
      break 
     x = fob.readline() 
     x = int(x) 
     theList.append(x) 
    print("List =", theList) 
    return theList 

下面是我从提取数据的文本文件:

9 
7 
1 
3 
2 
5 
4 

我的预期输出应该是:

List =[9,7,1,3,2,5,4] 

然而,当我运行这个功能,我得到以下错误:

Traceback (most recent call last): 
File "H:/CSCI-141/Week 7 Work/perk.py", line 47, in <module> 
    main() 
File "H:/CSCI-141/Week 7 Work/perk.py", line 44, in main 
    perk_sort(file_open()) 
File "H:/CSCI-141/Week 7 Work/perk.py", line 17, in file_open 
    x = int(x) 
ValueError: invalid literal for int() with base 10: '' 

I w如果有人能告诉我为什么我得到这个错误,以及如何修复我的代码,我真的很感激它,谢谢!

回答

1

您可能试图在空行上应用int()。 您可以使用file.readlines()获取所有行,然后轻松地遍历它们。

尝试这种情况:

def file_open(): 
    filename = "PATH TO YOUR FILE" 
    fob = open(filename, 'r') 
    lines = fob.readlines() 

    final_list = [] 
    for line in lines: 
     final_list.append(int(line)) 

    print "List: %s" % final_list 
+0

我试过,但它返回 [ '9 \ n', '7 \ n', '1 \ n', '3 \ n',“2 \ n ','5 \ n','4 \ n'] – SirGoose 2014-10-02 01:46:47