尝试读取和写入多个文件时出错

时间:2014-06-13 08:09:20

标签: python regex

我根据此主题中专家的评论修改了代码。现在,脚本会读取和写入所有单个文件。该脚本重复,突出显示并写入输出。当前的问题是,在突出显示搜索项的最后一个实例后,脚本将删除每个文件输出中最后一个搜索实例之后的所有剩余内容。

以下是修改后的代码:

import os
import sys
import re

source = raw_input("Enter the source files path:")

listfiles = os.listdir(source)

for f in listfiles:
    filepath = source+'\\'+f
    infile = open(filepath, 'r+')
    source_content = infile.read()

    color = ('red')
    regex = re.compile(r"(\b be \b)|(\b by \b)|(\b user \b)|(\bmay\b)|(\bmight\b)|(\bwill\b)|(\b's\b)|(\bdon't\b)|(\bdoesn't\b)|(\bwon't\b)|(\bsupport\b)|(\bcan't\b)|(\bkill\b)|(\betc\b)|(\b NA \b)|(\bfollow\b)|(\bhang\b)|(\bbelow\b)", re.I)

    i = 0; output = ""
    for m in regex.finditer(source_content):
        output += "".join([source_content[i:m.start()],
                           "<strong><span style='color:%s'>" % color[0:],
                           source_content[m.start():m.end()],
                           "</span></strong>"])

        i = m.end()
    outfile = open(filepath, 'w+')
    outfile.seek(0)
    outfile.write(output)
    print "\nProcess Completed!\n"
    infile.close()
    outfile.close()


raw_input()

2 个答案:

答案 0 :(得分:1)

错误消息告诉您错误是什么:

No such file or directory: 'sample1.html'

确保文件存在。或者使用try语句为其提供默认行为。

答案 1 :(得分:0)

您收到该错误的原因是因为python脚本不知道您要打开的文件所在的位置。

您必须提供文件路径才能打开它,如下所示。我简单地连接source file path+'\\'+filename并将结果保存在名为filepath的变量中。现在只需使用此变量在open()中打开文件。

import os
import sys

source = raw_input("Enter the source files path:")

listfiles = os.listdir(source)

for f in listfiles:
    filepath = source+'\\'+f # This is the file path
    infile = open(filepath, 'r')

您的代码还有其他一些问题,如果您要打开文件进行读写,则必须使用r+ mode。如果您使用r+模式打开文件,则在Windows的情况下更多,那么您可能必须在file.seek()之前使用file.write()以避免其他问题。您可以阅读使用file.seek() here

的原因