python在内存中打开文件,运行替换然后保存

时间:2017-01-25 00:48:40

标签: python regex replace

尝试执行以下操作:

  1. 在内存中打开文件
  2. 逐行阅读
  3. 搜索行中的多个模式
  4. 发现IF匹配由函数生成的随机哈希替换它。
  5. 我看到我的替换不起作用,以及如何在不创建新文件的情况下保存编辑过的文件。

    这是我的代码。

    with open('temp', 'r') as f:
        for line in f:
            firstPattern = re.search(r'email=(.*?)"', line)
            secondPattern = re.search(r'"emailTo":"(.*?)"', line)
            thirdPattern = re.search(r'pid="(.*?)"', line)
    
            if firstPattern:
                random_hash = hash_generator()
                temp_var = firstPattern.group(1)
                if temp_var in pattern_dict:
                    line.replace(str(temp_var), str(random_hash))
                else:
                    pattern_dict[firstPattern.group(1)] = random_hash
            elif secondPattern:
                random_hash = hash_generator()
            temp_var = secondPattern.group(1)
                if temp_var in pattern_dict:
                    line.replace(str(temp_var), str(random_hash))
                else:
                    pattern_dict[secondPattern.group(1)] = random_hash
            elif thirdPattern:
                random_hash = hash_generator()
            temp_var = thirdPattern.group(1)
                if temp_var in pattern_dict:
                    line.replace(str(temp_var), str(random_hash))
                else:
                    pattern_dict[thirdPattern.group(1)] = random_hash
    

    我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

文件以'r'模式打开,这意味着您无法在with下写入。由于您已经在内存中修改了数据,请尝试在“r”模式下关闭文件并打开“w”模式进行写入。