Python新手:尝试创建一个打开文件并替换单词的脚本

Python新手:尝试创建一个打开文件并替换单词的脚本,python,file-manipulation,Python,File Manipulation,我试图创建一个脚本,打开一个文件,并用“hello”替换每个“hola” f=open("kk.txt","w") for line in f: if "hola" in line: line=line.replace('hola','hello') f.close() 但我有一个错误: 回溯(最近一次呼叫最后一次): 文件“prueba.py”,第3行,在 对于f:IOError:[Errno 9]中的行,错误的文件描述符 有什么想法吗 Javi您已打开文件进行写入,但您

我试图创建一个脚本,打开一个文件,并用“hello”替换每个“hola”

f=open("kk.txt","w")

for line in f:
  if "hola" in line:
      line=line.replace('hola','hello')

f.close()
但我有一个错误:

回溯(最近一次呼叫最后一次):
文件“prueba.py”,第3行,在 对于f:IOError:[Errno 9]中的行,错误的文件描述符

有什么想法吗


Javi

您已打开文件进行写入,但您正在从中读取。打开原始文件进行读取,打开新文件进行写入。替换后,将原来的文件重命名为out,将新的文件重命名为in。

您还可以查看该语句

open('test.txt', 'w').write(open('test.txt', 'r').read().replace('hola', 'hello'))
或者,如果要正确关闭该文件:

with open('test.txt', 'r') as src:
    src_text = src.read()

with open('test.txt', 'w') as dst:
    dst.write(src_text.replace('hola', 'hello'))

您的主要问题是要先打开文件进行写入。当您打开一个文件进行写入时,文件的内容会被删除,这使得替换变得非常困难!如果要替换文件中的单词,有三个步骤:

  • 将文件读入字符串
  • 在该字符串中进行替换
  • 将该字符串写入文件
  • 代码:

    # open for reading first since we need to get the text out
    f = open('kk.txt','r')
    # step 1
    data = f.read()
    # step 2
    data = data.replace("hola", "hello")
    f.close()
    # *now* open for writing
    f = open('kk.txt', 'w')
    # step 3
    f.write(data)
    f.close()
    

    没错,但对于初学者来说,这是最简单、最直接的方法。回答内置的“输入”,也许src_text可能是一个更好的变量名?@Paul:也可能。已编辑。为什么以“w”模式打开文件?你用什么教程来学习Python?我们应该从一开始就教初学者使用“with”-见Max Shawabkeh的答案。@paul我不反对;然而,由于用户在操作文件的概念上已经有困难,我最初决定让我的答案尽可能接近他的原始代码。由于用户随后提出的一个问题指出了Python 2.5(它需要从
    \uuuuuu future\uuuuuuu
    进行特殊导入),我想我还是不改变它为好。当然,另一个答案也同样正确,如果不是那么明确的话。请注意,简单的替换将a)与“Hola”不匹配并给出“Hello”,b)与“scholar”中的“Hola”匹配并给出“schellor”。