从csv文件写入列表的问题

时间:2016-06-01 04:29:40

标签: python csv

我无法弄清楚我在这段代码中做错了什么。它似乎陷入无限循环,我必须杀死这个过程。最后,这段代码将用于将文件转换为Geojson格式,但在开始写入Geojson之前,我想确保我可以打开并附加到字典中。

我发现在尝试将csv文件附加到列表并打印出列表后(第23行,请注意此打印行仅用于帮助我解决问题),只有1行数据(应该有更多,可能是20-30行不同的列长。是的,我已经检查了输入文件。)我也尝试在另一个程序上运行csv输入,没有问题,所以我怀疑问题是我写的代码中的问题。

感谢您的帮助。

import csv

def main():
    try:
        strFOLDER = ( r'/Users/Smithy/Documents/Pycharm/' + '/')
        strFILE = raw_input("Enter the name of file " )
        my_file  = strFOLDER + strFILE
    except IOError:
        print 'Cannot read/locate file error'

    try:
        fp = open(my_file, 'rU')
        my_data = csv.reader(fp)
    except IOError:
        print 'Cannot read/locate file error'

    my_list = []
    my_dictionary = {}

    for row in my_data:
        my_list.append(row)
        print my_list
        list_len = len(my_list)
        num_count = 0
        while num_count < list_len:
            if (num_count < (list_len-2)):
                my_dictionary['name'] = [1]
                my_dictionary['location'] = ([num_count+2], [num_count+3])
                my_list.append(my_dictionary)
                num_count+=2

main()

2 个答案:

答案 0 :(得分:0)

while循环中,如果(num_count&gt;(list_len-2)),则不执行任何操作,因此此循环不会结束,并且仅显示第一行。

更确切地说,当你将第一行追加到my_list时,这一行的长度为1. if子句变为if (num_count < (1 - 2)),这显然不会发生。

答案 1 :(得分:0)

您已陷入while循环。

你的问题是num_count+=2永远不会发生,除非num_count < (list_len-2)恰好是真的。第一次附加list_len1等于num_count,因此Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); shareIntent.setType("image/jpeg"); startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))); 永远不会增加。