编写一个Python脚本,在各列中打印票证

问题描述 投票:0回答:2

我正在努力编写Python脚本来处理文件并生成包含票据的输出文本文件,该文件的格式可通过点矩阵打印机进行打印。作为参考,我还附带了一个示例,该示例显示了结果文本文件的外观。

ConcertTickets.txtConcertTickets_result.txt

我的主要问题是设计解决此问题的方法。我不知道如何逐列打印。我能够读取文件,逐行打印,进行验证并使用新名称写入文件。我不确定如何执行layout_name,column,column_width,column_spacing,left_margin,行间距和line_item的操作,我能做的最好的就是在票证之间的左边距处使用ljust()。

[我不希望有人为我完成工作,但是会非常感谢有或没有第三方软件包的体系结构方法的提示。

输入的音乐会门票文件由包含格式信息的标头和包含实际门票的正文组成。

标题行如下:

  • download_datetime-文件下载的日期和时间
  • order_datetime-下单的日期和时间
  • layout_name-用于格式化票证的布局的名称
  • 列-每页宽度的票证列数
  • column_width-每个票证列的宽度
  • column_spacing-票证列之间的间隔数
  • left_margin-第一个票证栏左侧的前导空格
  • row_spacing-票证之间的水平线数
  • line_item-订单项代表票证元素必须如何显示在机票,例如顶部的PIN码,然后是两个空行,然后是说明,序列号和有效期。订单项的有效值为:大头针,说明,序列号,有效日期和空白(空格)
  • ticket_summary-每个票证摘要都包含票证描述,后跟文件中该类型的票证数量以及票证的总面值,例如“金10.00,10,100.00”表示文件中有10张金$ 10.00的彩票,其价值为$ 100.00
  • ticket_fields-票证字段指示随后的票证数据中存在的字段及其顺序。这是标题的最后一行,并且此行之后的所有数据都应解释为正文数据,即CSV类型格式的实际票证]
  • 该脚本还需要通过检查文件主体中的实际票证数量是否与文件头中的票证摘要值相匹配来进行一些基本的文件验证。如果文件验证失败,则程序必须退出并显示相应的错误消息。

结果输出文件名必须与输入文件名相同,但在文件扩展名前应附加单词“ _result”。例如。如果输入文件名是ConcertTickets.txt,那么输出文件名必须是ConcertTickets_result.txt

我还需要为脚本开发一组测试用例。

到目前为止,这是我的代码

data = []
data_description = []
data_pin = []
data_serial_number = []
data_expiry_date = []
tickets_in_body = 0

# read file from line 19 and create two-dimensional array 

result_f = open('ConcertTickets.txt')

for each_line in result_f.readlines()[18:]:
    (description, pin, serial_number, expiry_date) = each_line.split(',')
    data_description.append(description)
    data_pin.append(pin)
    data_serial_number.append(serial_number)
    data_expiry_date.append(expiry_date.replace("\r\n",""))
    tickets_in_body += 1

data = [data_description, data_pin, data_serial_number, data_expiry_date]

# ticket validation and writing to file

result_golden_summary = open('ConcertTickets.txt')
golden_summary = result_golden_summary.readlines()
(golden_description, golden_summary_amount, golden_summary_value) = (golden_summary[15 - 1]).split(',')

if int(golden_summary_amount) != tickets_in_body:
    print('The ticket summary in the header does not match the amount of tickets in body')
else:
    (filename, extension) = (result_f.name).split('.')
    result_f = open(filename + "_result.txt", 'w')
    for row in data:
        result_f.write("".join(str(item).ljust(25) for item in row))

result_f.close()

我正在努力编写Python脚本来处理文件并生成包含票据的输出文本文件,该文件的格式可通过点矩阵打印机进行打印。供参考,我有...

python list text-files export-to-csv dot-matrix
2个回答
0
投票

这是打开(和关闭)文件的推荐方法:


0
投票

这是为您提供的一些代码:

© www.soinside.com 2019 - 2024. All rights reserved.