我有一份使用固定长度文件的家庭作业:
您将传递文件名P,名字F,姓氏L和新生日B.
在P中加载固定长度记录文件,在第一个中搜索F,L并将生日更改为B.
P= sys.argv[1]
F= sys.argv[2]
L= sys.argv[3]
B= sys.argv[4]
recordlength = 40
record = [[]]
start = 0
file1 = open(P, 'r')
data = file1.read()
while( (len(data) - start) >= recordlength):
records= data[start:start + recordlength]
record.append(records)
start+= recordlength
for i in range(0,len(record)):
if F and L in record[i]:
rec = record[i]
rec = rec[:-8] + B
record[i] = rec
data = "".join(records)
file1 = open(P, 'a+')
file1.write(record[i])
file1.close()
我应该得到这个输出:
Adam Smith 11111985Theodore Anderson 03201990Monty Biscuit-Barrel 10181980Adam Smithers 00000000Ruthy Anderson 06062010
我得到了这个输出:
Adam Smith 11111985Theodore Anderson 03201990Monty Biscuit-Barrel 10181980Adam Smithers 10101960Ruthy Anderson 06062010Adam Smithers 00000000
而不是替换此行:Adam Smithers 10101960,使用此行:Adam Smithers 00000000,它将此行添加到文件中,保留原始行。 我不确定我的问题在哪里,有人能指出我正确的方向吗?
答案 0 :(得分:0)
在第8行,您打开文件,但在第20行再次打开之前不要关闭。尝试在第20行之前关闭或直接在第8行打开参数“a”。