【问题标题】:Python: Creating a list from a filePython:从文件创建列表
【发布时间】:2014-10-02 01:35:37
【问题描述】:

所以我正在尝试创建一个函数,该函数将打开一个文本文件,逐行读取,然后从其中提取的数据创建一个列表。

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: ''

如果有人能告诉我为什么会出现此错误以及如何修复我的代码,我将不胜感激,谢谢!

【问题讨论】:

    标签: list python-3.x


    【解决方案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
    

    【讨论】:

    • 我试过了,但是它返回 ['9\n', '7\n', '1\n', '3\n', '2\n', '5\n ', '4\n']
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多