将python中的输出打印到txt文件

时间:2016-06-30 14:01:29

标签: python

编写了一个简单的程序,并希望将输出打印到文本文件中。我在剧本的最顶端尝试了以下内容:

python SagicorPremiumCalculator2.py > textfile.txt

但这让我在空闲时出现语法错误。我的语法怎么不正确?

python SagicorPremiumCalculator2.py > textfile.txt

python SagicorPremiumCalculator2.py > textfile.txt
import openpyxl, os, sys
wb = openpyxl.load_workbook('example.xlsx')
Millar_sheet = wb.get_sheet_by_name('Millar')
client = []
output = []
print(os.getcwd())


for rowOfCellObjects in Millar_sheet['A2':'AA13']:
        for cellObj in rowOfCellObjects:
                #if cellObj.value != None:
                #print(cellObj.coordinate, cellObj.value)
                client.append(cellObj.value)
        #print(client[2]) #client name
        print(client[0]) #policy number
        print(client[9]) #license plate
        #output.append(client[0]) #1
        #output.append(client[9]) #2
        if client[12] != "Not Applicable":
            float(client[12])
            print('S.I. = ' + '$' + str("%0.2f" % client[12]))
            #output.append("%0.2f" % client[12]) #3
        else:
            print('S.I. ' + client[12])
            print('Basic = ' + '$' + str("%0.2f" % client[13]))
            #output.append("%0.2f" % client[13])#3
        if client[14] != None:
            print('Loading = ' + str(100*client[14]) + '%')
        else:
            print('No Loading')
        val = client[13]
        if client[14] == None:
            val = client[15]     #if there is no loading percentage, val becomes subtotal
        else:
            val += (val*client[14]) # a = a + b, adds 150 to 1000
        print('Subtotal = ' + '$' + str("%0.2f" % val))#good
        if client[16] != None:
            ATD = val*client[16] #discount amount 
            print('ATD = ' + str(100*client[16]) + '%, -$' + str("%0.2f" % ATD))
            val -= (val*client[16])
            print('$' + str("%0.2f" % val))
        if client[17] != None:
            val -= (val*client[17])
            SP = val*client[17] #Discount amount
            print('SP = ' + str(100*client[17]) + '%, -$' + str("%0.2f" % SP))
            print('$' + str("%0.2f" % val))
        if client[18] != None:
                val = (val+client[18])
                PAB = client[18]
                print('PAB = +$' + str(client[18]))
                print('$' + str("%0.2f" % val))
        if client[19] != None:
            NCD = val*client[19]
            val -= (val*client[19])#discount amount
            print('NCD = ' + str(100*client[19]) +'%, -$' + str("%0.2f" % NCD))
            print('$' + "%0.2f" % val)
        if client[20] != None:
            val = (val+client[20])
            print('W/S = +$' + str(client[20]))
            print('$' + "%0.2f" % val)
        if client[21] != None:
            val = (val+client[21])
            print('LOU = $' + str(client[21]))
            print('$' + "%0.2f" % val)
        if val < 750: #Applies minimum premium if val is under 750
            print("Minimum premium applied")
            val = 750

        print('Pre-tax Premium is ' + '$' + str("%0.2f" % val)) #good 
        if client[23] == 0: #Client over 65, not being charged tax
                print('According to Sagicor speadsheet, client over 65')
        else:
                PreTax = val*0.06
                val = (PreTax+val)
                print('Premium Tax = +$' + str("%0.2f" % PreTax)) #good
                print('$' + "%0.2f" % val)
        if client[25] != None:
                print('RS = +$' + str(client[25]))
                val = (val+client[25])
                print('Total = $' + str("%0.2f" % val))
                #if val == client[26]:
                        #print('Sagicor\'s total agrees with calculated total - top')
                #else:
                        #print('Premium does not agree - top')

        else:
                print('Roadside assistance NOT included')
                print('Total = $' + str("%0.2f" % val))
                #if val == client[26]:
                        #print('Sagicor\'s total agrees with calculated total - bottom')
                #else:
                        #print('Premium does not agree - bottom')
        client = []
        output = []
        print('--- END OF ROW ---')

1 个答案:

答案 0 :(得分:0)

如果要在文件中编写脚本输出,我会看到两个选项。 第一个是处理python脚本中的写入:

#!/usr/bin/python
#I am here assuming that you use a Unix-like system (i.e. Not Windows )

file = open('textfile.txt','w')

... some code ...

file.write(myData +'\n')

#Don't forget to close the file at the end of the script
file.close()

N.B:&#39; w&#39;如果文件不存在,则选项会创建该文件,但它会删除该文件的先前版本。如果要在现有文件的末尾添加行,则应使用&#39; a&#39;代替。 &#39; \ n&#39;就在这里创建一条新线。

另一个选项如下:在脚本中简单使用打印存储

#My Script
... some code ...
print MyData

然后使用以下命令在shell 而不是IDLE 中运行脚本:

python SagicorPremiumCalculator2.py > textfile.txt

如果你正在运行Windows,你肯定应该使用第一个选项(因为我不确定bash样式命令在cmd中是否有效)。

我希望这有帮助!