我正在尝试编写一个Python脚本,它将反转txt文件中的字符并将它们放在一个新文件中,但它总是省略字符的第一行并将最后两行连接在一起。怎么了?提前谢谢^^
ManageProfilesAction
答案 0 :(得分:2)
正如其他人提到的那样,你不小心读了第一行,但随后把它扔了,所以它永远不会到达你的反向弦。这应该是一个有效的解决方案:
def main():
fp = open( "reverse", "w" )
hello = open("correct")
add = ""
while True:
text = hello.readline()
for i in range(len(text)-1, -1, -1):
add += str(text[i])
if text == "":
fp.writelines(add)
break
fp.close()
fp = open("reverse")
buffer = fp.read()
fp.close()
print( buffer )
if __name__ == '__main__':
main()
但我也希望用Python向你展示一些很酷的东西。给定任何可迭代的(字符串,列表等),您可以非常容易地反转它。
l = [1, 2, 3]
print(l[::-1]) # prints [3, 2, 1]
所以你的整个程序只能用两行编写!
def main():
with open('reverse', 'w') as r_fp, open('correct', 'r') as c_fp:
r_fp.write(c_fp.read()[::-1])
if __name__ == '__main__':
main()
答案 1 :(得分:1)
首先出现的错误是您读取第一行,进入循环,读取第二行,然后将变量text
指向新行,丢失对第一行的引用。
第二个问题是你读到的最后一行可能不会以换行符\n
结束,所以当你向后写它时,它会与前一行结合。
另请注意,with
使用index.html
来处理文件对象