我有一个简短的作业,要求以下内容:
您将收到文件名P,名字F,姓氏L和新文件名 生日B。
将定长记录文件加载到P中,首先搜索F,L 并将生日改为B。
提示:每条记录的固定长度为40。
然后保存文件。
如果您熟悉该服务,那么我正在使用Codio。发生的事情是,当您单击“检查”按钮时,它将运行您编写的python文件以及它生成的参数,并且您的python文件输出应该与期望的匹配。
到目前为止,这是我的代码:
# Get the filepath from the command line
import sys
P= sys.argv[1]
F= sys.argv[2]
L= sys.argv[3]
B= sys.argv[4]
# Your Code Goes Here
RECORD_LEN = 40
start = 0
records = []
file1 = open(P, 'rt')
data = file1.read()
file1.close()
while (len(data) - start) >= RECORD_LEN:
record = data[start:start+RECORD_LEN]
records.append(record)
start += RECORD_LEN
#print('B = ' + B)
#print('~~~RECORDS BEFORE MODIFICATION~~~\n' + str(records))
for i in range(0, len(records)):
if F in records[i] and L in records[i]:
records[i] = records[i][0:RECORD_LEN-8] + B
#print('~~~RECORDS AFTER MODIFICATION~~~\n' + str(records))
outFile = open(P, 'wt')
for curRecord in records:
outFile.write(curRecord)
outFile.close()
输出如下:
Program Output
Your program output did not match the expected output.
Your output: Adam Smith 11111900Theodore
Anderson 03201990Monty Biscuit-Barrel 10181980Adam
Smithers 11111900Ruthy Anderson 06062010
Expected output: Adam Smith 11111900Theodore
Anderson 03201990Monty Biscuit-Barrel 10181980Adam
Smithers 10101960Ruthy Anderson 06062010
由于某种原因,文本文件没有获得更新的生日,但是当我取消注释打印语句以测试输出时,记录已更新。
Program Output
Program Failed for Input: /tmp/fixed1 Adam Smithers 00000000
Expected Output:
Your Program Output: B = 00000000
RECORDS BEFORE MODIFICATION
['Adam Smith 11111985', 'Theodore
Anderson 03201990', 'Monty Biscuit-Barrel 10181980',
'Adam Smithers 10101960', 'Ruthy Anderson
06062010']
RECORDS AFTER MODIFICATION
['Adam Smith 11111985', 'Theodore Anderson 03201990', 'Monty
Biscuit-Barrel 10181980', 'Adam Smithers 00000000',
'Ruthy Anderson 06062010']
Your output was incorrect. Try again.
不好意思的格式道歉。记录信息之间的空格是有意的,这就是Codio提供记录的方式。
如您所见,按照程序的要求,似乎出现了与名字和姓氏匹配的记录已正确用B更新,但是当我注释这些用于测试的打印语句时,它显然未写入文件正确的更新生日。
我们将一如既往地感谢所有帮助。
编辑:如果它变得更容易,我会附上图片,以便您希望我能说的更好。 https://imgur.com/a/XsdYdmE