我的目标是创建一个python程序,它将接收用户输入以打开特定文件,将该文件的内容复制到新文件(由用户命名),然后从新文件中删除所有空格和数字
我成功地将'sequence'文件的内容复制到新创建的'newsequence'文件中。当我尝试操纵'newsequence'文件时,我的第二个'for'循环中的一切都崩溃了。
我遇到了一个错误,它无法读取'newsequence'(也许是因为它认为我希望它读取变量,而不是文件的内容?)。我认为将文件转换为字符串可能有所帮助(虽然我承认我认为它应该没有这样做),所以在第7行我将'newsequence'转换为字符串。
这至少使程序运行完成,而没有提出“io.UnsupportedOperation:not readable”错误,但它仍然不正确。我的输出文件与原始的“序列”文件相同,只是它在末尾包含一个额外的行,只读取“8”。这个“8”来自哪里,我需要对我的代码进行哪些更改才能让它做我想做的事情?
我对编程很陌生,所以我可能犯了一系列愚蠢的错误。谢谢你能给我的任何帮助。
sequence = open(input("Choose sequence file: "))
name = input('Enter name of new text file, without .txt: ') + '.txt'
with open(name, 'a') as newsequence:
for line in sequence:
newsequence.write(line)
for line in str(newsequence):
result = ''.join(i for i in line if i.isdigit())
result = result.replace(" ","")
newsequence.write(result)
sequence.close()
newsequence.close()
答案 0 :(得分:1)
所以我认为你错误地写了两次不必要的文件。而不是写入文件,然后尝试读取并编辑它,为什么不在转录时更改文件。我会改变你的功能:
sequence = open(input("Choose sequence file: "))
name = input('Enter name of new text file, without .txt: ') + '.txt'
with open(name, 'w') as newsequence: # notice the `w` instead of the `a`
for line in sequence:
result = ''.join(i for i in line if i.isdigit())
result = result.replace(" ","")
newsequence.write(result)
sequence.close()
newsequence.close()
答案 1 :(得分:0)
为什么不在一个for
循环中执行此操作?
未经测试:
file_in = open(input("Choose sequence file: "))
name = input('Enter name of new text file, without .txt: ') + '.txt'
with open(name, 'a') as file_out:
for line in file_in:
line = ''.join(i for i in line if i.isdigit())
line = line.replace(" ","")
file_out.write(line)
file_in.close()
您无法在同一文件中读取(逐行)和写入(逐行) - 在阅读之前,您将覆盖旧文本。