为什么我的文件没有用准确的信息更新?

时间:2019-12-03 21:42:53

标签: python file io

我有一个简短的作业,要求以下内容:

  

您将收到文件名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

0 个答案:

没有答案