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

时间:2010-04-05 09:25:10

标签: python file-manipulation

我试图创建一个打开文件的脚本,并将每个'hola'替换为'hello'。

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

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

f.close()

但我得到了这个错误:

  

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

有什么想法吗?

哈维

4 个答案:

答案 0 :(得分:7)

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'))

答案 1 :(得分:4)

您已打开文件进行书写,但您正在阅读该文件。打开原始文件进行读取,打开新文件进行写入。更换后,重命名原件和新的。

答案 2 :(得分:4)

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

  1. 将文件读入字符串
  2. 在该字符串中进行替换
  3. 将该字符串写入文件
  4. 在代码中:

    # 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()
    

答案 3 :(得分:3)

您还可以查看with声明。