我用Python 2.6.2在Linux上运行这个程序,它运行正常,返回的是十进制值,但是当我在Windows上的Python 2.7.2上运行它时,它不起作用,只是给了一段时间的空白空间,然后内存错误,但我不明白为什么......我需要它在Windows上运行其计算股票权益(ROE)的计划。谢谢。此程序为什么在Linux Python Shell上运行,但不在Windows上运行?
运行该程序所需的CSV文件是here。 。
import csv
csvname = raw_input("Enter csv name: ")
sbuxfile = csv.reader(open(csvname), delimiter=',', quotechar='|')
# List of Data
row5, row8, row3, row7, avgequity, roe1, roe2 = ([] for i in range(7))
count = 0
# Grab data and numerical values from CSV.
for row in sbuxfile:
count += 1
if count == 8:
row8 = row
elif count == 5:
row5 = row
elif count == 3:
row3 = row
elif count == 7:
row7 = row
a = 1
# Perform calculations for average equity and ROE.
while a < 8 :
if a == 1:
avgequity.append(round(float(row8[a]),2))
roe1.append(float(row5[a])/float(row8[a]))
roe2.append((float(row5[a])/float(row3[a])) * (float(row3[a])/float(row7[a])) * (float(row7[a])/float(row8[a])))
else:
avgequity.append(round(float((row8[a]),2) + float(row8[a-1]))/2)
roe1.append(float(row5[a])/float(row8[a]))
roe2.append((float(row5[a])/float(row3[a])) * (float(row3[a])/float(row7[a])) * (float(row7[a])/((float(row8[a]) + float(row8[a-1]))/2)))
a+=1
print "\nAverage equity is " + str(avgequity) + "\n"
print "ROE method 1 is " + str(roe1) + "\n"
print "ROE method 2 is " + str(roe2)
你的输入文件是什么? – KevinDTimm
如果将open(csvname)更改为open(csvname,'rb')',会发生什么? –
我刚刚在上面添加了输入文件,您可以下载并测试它。另外当你添加rb时,它仍然不能工作,只是同一个空白页面,并在一段时间后内存错误。 – Goose