gpt4 book ai didi

python - 在 Python 中从一个文件读取和写入一个新行到另一个文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:08 25 4
gpt4 key购买 nike

我正在尝试从一个文件中读取并写入另一个文件。当我试图将换行符从原始文件保留到新文件时,问题就出现了。

def caesar_encrypt(orig , shift):
enctextCC = open("CCencoded.txt" , 'w')
for i in range(len(orig)):
for j in range(len(orig[i])):
curr = orig[i][j]
if ord(curr) == 10:
enctextCC.write("\n") //doesn't work :(
elif ord(curr) < 97:
enctextCC.write(curr)

elif ord(curr)+shift > 122:
enctextCC.write(chr(ord(curr)+shift-26))

elif ord(curr)+shift >= 97 & ord(curr)+ shift <= 122 :
enctextCC.write(chr(ord(curr)+shift))

enctextCC.close()

关于哪里出了问题有什么建议吗?

谢谢

编辑:解决方案是在外部 for 循环的末尾添加换行符。由于我正在读取列表列表,因此内部循环基本上是一行。所以它应该看起来像这样:

    def caesar_encrypt(orig , shift):
enctextCC = open("CCencoded.txt" , 'w')
for i in range(len(orig)):
for j in range(len(orig[i])):
curr = orig[i][j]
if ord(curr) < 97:
enctextCC.write(curr)

elif ord(curr)+shift > 122:
enctextCC.write(chr(ord(curr)+shift-26))

elif ord(curr)+shift >= 97 & ord(curr)+ shift <= 122 :
enctextCC.write(chr(ord(curr)+shift))
enctextCC.write("\n")

enctextCC.close()

最佳答案

你做错了

out_file = open("output.txt", "w")
for line in open("input.txt", "r"):
out_file.write(line)
out_file.write("\n")

请注意,我们不检查换行符结尾,因为我们一次获取一行,因此我们确信在我们读取的一行之后是换行符

但是为什么你需要这样做而不是正常的复制?

编辑:如果您只需要复制文件,请使用:

from shutil import copy
copy("input.txt", "output.txt")

如果您需要读取整个文件,请使用 read() 函数,如下所示:

file_data = open("input.txt", "r").read()
# manipulate the data ...
output = open("output.txt", "w")
output.write(file_data)
output.close()

编辑 2:因此,如果您尝试将其他 ASCII 值映射到每个字符,那么您做对了,除了:

  • 你忘了写其他字符,你只会输出\n个字符
  • 确保您确实阅读换行符,因为 readlines() 和遍历文件不会返回换行符。

您的代码看起来更像这样:

for j in range(len(orig[i])):
curr = orig[i][j]
if ord(curr) == 10:
enctextCC.write(curr)
else:
enctextCC.write(transformed(curr))

关于python - 在 Python 中从一个文件读取和写入一个新行到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3945028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com