CSV文件不会在python中保持打开状态

时间:2018-07-26 14:03:47

标签: python-3.x import-csv

使用python 3.在下面的代码中,不会打印第二个循环,不确定为什么。

忽略我要执行的操作,主要要点是在第一个循环之后无法访问该文件...

有什么想法吗?谢谢!

Import csv
f = open('table.csv')
csv_f = csv.reader(f)

# Convert data entries to integers
for row in csv_f:
    if row[0]!="A": row[1:len(row)]=list(map(int,row[1:len(row)]))
    print(row)

# Print table again
for row in csv_f:
    print(row)

1 个答案:

答案 0 :(得分:2)

您要做什么是从const string = 'productCat:Wine:country:Australia:year:2000:type:white wine'; const findNext = (data, str) => { const array = data.split(':'); const i = array.indexOf(str); if(i >= 0) return array[i+1]; } console.log(findNext(string, 'productCat')); console.log(findNext(string, 'country'));访问数据,它是迭代器-意味着它只能完全传递一次,而您必须再次生成它。

您可以将其列出:

const string = 'productCat:Wine:country:Australia:year:2000:type:white wine';

const parseString = str => {
  const array = str.split(':');
  const result = {};
  for(let i = 0; i<array.length; i=i+2) {
    result[array[i]] = array[i+1];
  }
  return result;
}

const result = parseString(string);
console.log(result);
console.log(result.country);
console.log(result.year);

或在第二个循环之前再次加载文件。

同时,我建议稍微更改您的代码:

csv_f

这样,文件就不会在csv_f = list(csv.reader(f)) 语句之外保持打开状态-比使用简单的with open('table.csv') as f: csv_f = list(csv.reader(f)) # Convert data entries to integers for row in csv_f: if row[0]!="A": row[1:len(row)]=list(map(int,row[1:len(row)])) print(row) # Print table again for row in csv_f: print(row)

更好的做法