代码之家  ›  专栏  ›  技术社区  ›  user3754712

在PC上查找一个文件并替换字符串会擦除整个文件

  •  2
  • user3754712  · 技术社区  · 10 年前

    我需要在pc上查找一个特定的文件,并仅替换该文件中字符串重复的一部分。我使用的是Python 2.6。脚本会找到该文件,但它不会替换字符串的所有实例,而是将该文件清除为空白。知道为什么吗?

    import os
    from os.path import join
    import fileinput
    lookfor = "particular.txt"
    textToSearch = "Alonglineoftext@thefile"
    textToReplace = "Alonglineoftext@withnewtextinthefile"
    for root, dirs, files in os.walk('C:\\'):
      print "searching", root
      if lookfor in files:
        for line in fileinput.FileInput((join(root, lookfor)),inplace=1):
            line = line.replace(textToSearch, textToReplace)
            print line
        break
    

    有什么建议吗?

    谢谢

    1 回复  |  直到 10 年前
        1
  •  3
  •   Nir Alfasi    10 年前

    我测试了你的代码,它只运行一个小错误:

    以下行:

    line = line.replace(textToSearch, textToReplace)
    

    应替换为:

    line = line.strip().replace(textToSearch, textToReplace)
    

    否则每行将附加一个 newline -这也可能是你找不到替代品的原因(因为你希望它们是不同的(原始的)行号)