我正在努力编写Python脚本来处理文件并生成包含票据的输出文本文件,该文件的格式可通过点矩阵打印机进行打印。作为参考,我还附带了一个示例,该示例显示了结果文本文件的外观。
ConcertTickets.txt和ConcertTickets_result.txt
我的主要问题是设计解决此问题的方法。我不知道如何逐列打印。我能够读取文件,逐行打印,进行验证并使用新名称写入文件。我不确定如何执行layout_name,column,column_width,column_spacing,left_margin,行间距和line_item的操作,我能做的最好的就是在票证之间的左边距处使用ljust()。
[我不希望有人为我完成工作,但是会非常感谢有或没有第三方软件包的体系结构方法的提示。
输入的音乐会门票文件由包含格式信息的标头和包含实际门票的正文组成。
标题行如下:
该脚本还需要通过检查文件主体中的实际票证数量是否与文件头中的票证摘要值相匹配来进行一些基本的文件验证。如果文件验证失败,则程序必须退出并显示相应的错误消息。
结果输出文件名必须与输入文件名相同,但在文件扩展名前应附加单词“ _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脚本来处理文件并生成包含票据的输出文本文件,该文件的格式可通过点矩阵打印机进行打印。供参考,我有...
这是打开(和关闭)文件的推荐方法:
这是为您提供的一些代码: