将文件名列表合并到循环python中

时间:2016-03-02 19:57:50

标签: python python-3.x

我有一组要打开的文件并搜索字符串。我的代码适用于单个文件。 由于我想在每个文件中搜索不同的字符串,因此更加困难。例如:

#include <stdio.h>
#include <stdlib.h>


int findLength(char array[]) {
    int i = 0;
    for (i = 0; array[i] != '\0'; i++) {
    }
    return i;
}

char* arrayToString(char **string, size_t size) {
    int bigSize = 0, len;
    int i = 0, j, k;
    for (j = 0; j < size; j++) {
        bigSize += findLength(string[j]);
    }
    char *bigstring = (char *)malloc(bigSize + 1);
    for (j = 0; j < size; j++) {
        len = findLength(string[j]);
        for (k = 0; k < len; k++) {
            bigstring[i++] = string[j][k];
        }
    }
    bigstring[i] = '\0';
    return bigstring;
}

int main(int argc, const char * argv[])
{
    char *color[] = { "red", "blue", "red" };
    char *bigstring = arrayToString(color, 3);
    printf("%s\n", bigstring);
    free(bigstring);
    return 0;
}

我的问题是,编写一个完整的新脚本是否更容易执行此操作,还是值得修改现有脚本以合并此功能?

**File    | String**
one.txt | ra
two.txt | nd
three.txt | om
four.txt | st

该脚本打开作为输入提供的文件,然后在其中搜索作为输入的字符串。然后它在到达作为输入的字符串时开始复制,并在到达单词&#34; interface&#34;时停止复制。它出现在所有文本文件中。然后将复制的部分写入另一个文件。

所需的输出将是每个文件名的列表,如果找到该字符串,则依赖于是或否。

import re
import io
prompt = ">> "
configfile = input(prompt)
interfaceno = input(prompt)

with open(configfile) as infile, open('output2.txt', 'w+') as outfile:
        copy = False
        for line in infile:
                    if line.startswith("interface " + interfaceno):
                                copy = True
                    elif line.startswith("interface"):
                                copy = False
                    elif copy:
                                outfile.write(line)

1 个答案:

答案 0 :(得分:0)

保留现有代码,但启动新程序。 这个新文件会读取您发布的第一个文件,其中包含文件字符串列。逐行读取该文件,将每行拆分为文件名和搜索字符串。将它们放入变量并打印出来。你将循环执行此操作。

现在,回到你的第一个程序。获取特定于文件的部分(在提示行下面)并将其作为刚刚编写的循环体。您可能需要调整几个变量名称,但这基本上就是程序:您已经有了处理一个文件的东西;只需将它放在循环中即可处理大量文件。