Python新手:尝试创建一个打开文件并替换单词的脚本
我试图创建一个脚本,打开一个文件,并用“hello”替换每个“hola”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您已打开文件进行写入,但您
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”。