【发布时间】:2020-05-20 22:45:14
【问题描述】:
所以我正在研究这段代码,它从 .txt 文件中复制行以在算法中使用它们,然后将结果保存到另一个文件中。该程序总是跳过第一行,而不是像在第一个 .txt 文件中那样输出 6 行,而是输出 5。我已经使用了很长时间,但似乎找不到导致它的原因。这是代码。
encryptString = []
counter = 0
dTagID = []
longVer = []
shortVer = []
#reading
fRead = open("certTags.txt", "r")
for line in fRead.readlines():
dTagID.append(line)
lengthList = len(dTagID)
while counter < lengthList:
tempSave = encryptSave + dTagID[counter]
tempSave = int(tempSave)
# Encryption
msg = tempSave
msge = msg**e
msgn = msge % N
msgn = str(msgn)
longVer.append(msgn)
# Checksum
checksum = sum(map(int, msgn))
checksum = str(checksum)
shortVer.append(encryptSave+checksum)
# Saving to file
fWriteS = open("shortVer.txt", "a+")
fWriteS.write(shortVer[counter] + '\n')
fWriteL = open("longVer.txt", "a+")
fWriteL.write(longVer[counter] + '\n')
counter = counter + 1
【问题讨论】:
-
首先,您的整个第一个循环可以替换为
dTagID=list(fRead)。其次,在遍历列表时不要使用while。使用for。 -
@DYZ 照你说的做了,它仍然输出 5 个值,而不是输入的 6 个。我在它们被读取后输入了一个打印命令,它表明它们被正确复制了。
标签: python python-3.x list file read-write