【发布时间】:2013-04-18 20:36:40
【问题描述】:
我编写了一个函数来从 csv 文件中获取行数据,但失败了。所以我插入了这么多“打印”来看看出了什么问题。但令我惊讶的是,控制台一直是空的,这很奇怪。我多次重新缩进我的代码 我的代码被炸了:
# -*- coding: utf-8 -*-
import csv
def get_rows(csv_file):
print '0'
reader=csv.reader(open(csv_file))
print '1'
#get the colnum names,lowercased
col_names=tuple(k.lower() for k in reader.next())
print '2'
for row in reader:
yield dict(zip(col_names,row))
print col_names
def main():
file_name='companylist.csv'
try:
get_rows(file_name)
except:
print 'OK'
if __name__=='__main__':
main()
代码:
# -*- coding: utf-8 -*-
import csv
reader=csv.reader(open('companylist.csv'))
col_names=tuple(k.lower() for k in reader.next())
for row in reader:
dict(zip(col_names,row))
print col_names
工作完美,结果:
('symbol', 'name', 'lastsale', 'marketcap', 'adr tso', 'ipoyear', 'sector', 'industry', 'summary quote', '')
代码:
# -*- coding: utf-8 -*-
import csv
def main():
reader=csv.reader(open('companylist.csv'))
col_names=tuple(k.lower() for k in reader.next())
print '1'
print col_names
for row in reader:
yield dict(zip(col_names,row))
print col_names
if __name__=='__main__':
main()
一无所获
和代码:
# -*- coding: utf-8 -*-
import csv
def get_rows(csv_file):
print '0'
reader=csv.reader(open(csv_file))
print '1'
#get the colnum names,lowercased
col_names=tuple(k.lower() for k in reader.next())
print '2'
for row in reader:
yield dict(zip(col_names,row))
print col_names
def main():
file_name='companylist.csv'
try:
if(get_rows(file_name)):
print "OK"
except Exception,ex:
print Exception,":",ex
if __name__=='__main__':
main()
导致:OK
【问题讨论】:
-
您甚至没有从异常中获得
"OK"?另外,不要捕获这样的赤裸裸的异常。您正在丢失不同异常可能包含的所有有价值的信息。 -
你要导入到另一个模块吗?
-
如果这些打印都没有运行,这可能意味着 python 没有读取缩进错误,但你有一个。也许是 4 个空格而不是缩进。这最近发生在我身上,导致我的一个 while 循环在重新分配值之前结束,因此它永远持续下去。我只需要重新缩进那行,一切都解决了
-
我重新缩进了所有的行,但仍然没有“OK”
-
如果你只是从一个常规语句而不是另一个函数来做它是否有效:
get_rows('companylist.csv')
标签: python function csv printing