Marta
Marta

Reputation: 103

moving files from an unknown folder to other

I am extracting .tar.gz files which inside there are folders (with files with many extensions). I want to move all the .txt files of the folders to another, but I don't know the folders' name.

.txt files location ---> my_path/extracted/?unknown_name_folder?/file.txt

I want to do ---> my_path/extracted/file.txt

My code:

os.mkdir('extracted')
t = tarfile.open('xxx.tar.gz', 'r')
for member in t.getmembers():
      if ".txt" in member.name:
            t.extract(member, 'extracted')
      ###

Upvotes: 2

Views: 247

Answers (1)

Josh Wilkins
Josh Wilkins

Reputation: 193

I would try extracting the tar file first (See here)

import tarfile
tar = tarfile.open("xxx.tar.gz")
tar.extractall()
tar.close()

and then use the os.walk() method (See here)

import os
for root, dirs, files in os.walk('.\\xxx\\'):
    txt_files = [path for path in files if path[:-4] == '.txt']

OR use the glob package to gather the txt files as suggested by @alper in the comments below:

txt_files = glob.glob('./**/*.txt', recursive=True)

This is untested, but should get you pretty close

And obviously move them once you get the list of text files

new_path = ".\\extracted\\"
for path in txt_files:
    name = path[path.rfind('\\'):]
    os.rename(path, new_path + name)

Upvotes: 4

Related Questions