Search code examples
pythonpython-2.7copyfile-copying

Copying selected lines from files in different directories to another file


I have a directory with many subdirectories, containing files. I want to open the files ending with "root.vrpj" or "root.vprj", in "App_integrations" folder and copy the lines containing the word "table" to another file.

Until now I've managed to visit each file with this code:

for root, dirs, files in os.walk(movedir):
for filename in files:
    if filename.endswith(("root.vrpj", "root.vprj")):

The problem is that what I have now are just the names of the files I want to visit and I'm stuck here.


Solution

  • I finally solved it

        import os
    
    rootdir = my root folder
    
    # creates a file f that contains all the lines of the files 
    # with "root.vrpj" or "root.vprj" in their name
    # and who are inside "App_integrations" folders
    # without duplicates
    
    #creating the big file with all the file containing the lines I need
    f = open('final_file.txt', 'a')
    for root, dirs, files in os.walk(rootdir):  
        for filename in files:
            if (filename.endswith(("root.vrpj", "root.vprj")) and ("App_Integration" in os.path.join(root, filename))):
                full_name = os.path.join(root, filename) 
                data = open(full_name).read()
                f.write(data + "\n")                 
    f.close()
    
    #copying the lines I need to f1 without duplicates
    lines_seen = set()
    f = open('final_file.txt')
    f1 = open('testread1.txt', 'a')
    doIHaveToCopyTheLine=False
    for line in f.readlines():
        if (("Table" in line) and (line not in lines_seen)):
            doIHaveToCopyTheLine=True
            if doIHaveToCopyTheLine:
                f1.write(line)
                lines_seen.add(line)
    f1.close()
    f.close()