从一个文件中获取值,经过一些计算和一些更改后,需要在python中打印到另一个文件



下面是c.txt

CO11 CSE C1 8
CO12 ETC C1 8
CO13 Electrical C2 12
CO14 Mech E 5

我的程序需要在屏幕上打印课程摘要,并将该摘要保存到文件中命名为cr.txt。给定上面的c.txt,您的程序输出应该如下在下面course_report.txt的内容也应该相同,除了最后一行。课程第二列中的名字用*表示必修课,用–表示选修课课程第四列是参加该课程的学生人数。第五列是本课程的平均成绩。

CID Name Points. Enrollment. Average.
----------------------------------
CO11 * CSE 8 2 81
CO12 * ETC 8 10 71
CO13 * Electrical 12 8 61
CO14 - Mech 5 4 51
----------------------------------
poor-performing subject is CO14 with an average 51.
cr.txt generated!

以下是我尝试过的:

def read(self):
ctype = []
fi = open("c.txt", "r")
l = fi.readline()
while l != "":
fields = l.strip().split(" ")
self.c.append(fields)
l = fi.readline().strip()
f.close()
# print(f"{'CID'}{'Name':>20}{'Points.':>16}{'Enrollment.':>18}{'Average.':>10}")
# print("-" * 67, end="")
print()
for i in range(0, len(self.c)):
for j in range(len(self.c[i])):
obj = self.c[i][j]
print(obj.ljust(18), end="")
print()
print("-" * 67, end="")
print()

在使用"open"函数后,您可以尝试使用"file.read"或"file.readlines",如果您选择"file.reads",则必须使用"for row in file.readline((",例如"file.red":

headers = ['CID', 'Name', 'Points.', 'Enrollment.', 'Average.']
compulsory_course = ['CO11', 'CO12', 'CO13']
elective_course = ['CO14']
count = 0
with open('c.txt', 'r') as file_c:
file_c.seek(0, 0)
file_string = file_c.read().replace('n', ' ')
fields = file_string.split(' ')
with open('cr.txt', 'w') as file_cr:
for field in headers:
file_cr.write(f'{field}    ')
file_cr.write('n')
for v in fields:
if count == 4:
file_cr.write('n')
count = 0
count += 1
if v in compulsory_course:
file_cr.write(f'{v} *    ')
continue
elif v in elective_course:
file_cr.write(f'{v} -    ')
continue
elif count == 3:
file_cr.write(f' ')
continue
file_cr.write(f'{v}    ')

最新更新