无法创建新文件然后操纵其内容

时间:2016-10-03 03:35:09

标签: python

我的目标是创建一个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()

2 个答案:

答案 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()

您无法在同一文件中读取(逐行)和写入(逐行) - 在阅读之前,您将覆盖旧文本。