首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python搜索和写入文件

python搜索和写入文件
EN

Stack Overflow用户
提问于 2012-02-16 16:28:30
回答 5查看 1.6K关注 0票数 2

在下面的代码中,我试图替换一个包含以下内容的文件的内容。应该将hellohello world和字符串hellohello替换为hello,并将其写回file.Ho以执行此操作

代码语言:javascript
运行
复制
  #!/usr/bin/python
  import os

  new_file_list=[]
  all_files=os.listdir("/tmp")
  for ff in all_files:
     if ff.endswith(".txt"):
        new_file_list.append(ff)

  for files in new_file_list:
     if files == "a.txt":
       print "======================================="
       file_name="/tmp/"+str(files)
       print file_name
       f=open(file_name ,"rw")
       while True:
         print "======================================="
         for line in f.readline():
            print line
            print "======================================="
            f.write(line.replace("hellohello","hello"))
            print line
         else:
            break
       for line in f.readline():
         print line

  f.close()
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-16 16:53:55

你可以使用fileinput模块就地替换文件中的字符串(不需要在你的代码中打开两个文件或打开同一个文件两次或将整个文本文件加载到内存中)。

代码语言:javascript
运行
复制
#!/usr/bin/python
import os
import fileinput

new_file_list=[]
all_files=os.listdir("/tmp")
for ff in all_files:
 if ff.endswith(".txt"):
    new_file_list.append(ff)

for files in new_file_list:
 print files
 if files == "a.txt":
   print "======================================="
   file_name="/tmp/"+str(files)
   print file_name

   f = fileinput.FileInput(file_name, inplace=1)

   print "======================================="
   for line in f:
        line = line.replace("hellohello","hello")
        print line,
   f.close()
票数 2
EN

Stack Overflow用户

发布于 2012-02-16 16:44:58

你不能写到文件的中间。最简单的解决方案是将文件读入内存,替换文本,然后将其写回。

代码语言:javascript
运行
复制
with open('file_name') as f:
    text = f.read()

text = text.replace('hellohello', 'hello')

with open('file_name', 'w') as f:
    f.write(text)
票数 1
EN

Stack Overflow用户

发布于 2012-02-16 16:45:16

完成这类简单任务的最简单方法是从文件中读取所有数据,执行替换,然后将新数据写入文件。

下面是一些示例代码,说明您似乎正在尝试执行的操作:

代码语言:javascript
运行
复制
filename = "/tmp/a.txt"
with open(filename, 'r') as f:
  data = f.read()
with open(filename, 'w') as f:
  f.write(data.replace("hellohello", "hello"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9307836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档