PythonNewb
PythonNewb

Reputation: 1

Running bash scripts within newly created folders based on file names

I'm not sure even where to start.

I have a list of output files from a program, lets call them foo. They are numbered outputs like foo_1.out

I'd like to make a directory for each file, move the file to its directory, run a bash script within that directory, take the output from each script, copy it to the root directory as a concatenated single file.

I understand that this is not a forum for "hey, do my work for me", I'm honestly trying to learn. Any suggestions on where to look are sincerely appreciated!

Thanks!

Upvotes: 0

Views: 95

Answers (2)

jmetz
jmetz

Reputation: 12803

You should probably look up the documentation for the python modules os - specifically os.path and a couple of others - and subprocess which can be found here and here respectively.

Without wanting to do it all for you as you stated - you'll be wanting to do something like:

for f in filelist:
    [pth, ext] = os.path.splitext(f)
    os.mkdir(pth)
    out = subprocess.Popen(SCRIPTNAME, stdout=...)
    # and so on...

Upvotes: 1

Michael0x2a
Michael0x2a

Reputation: 64358

To get a list of all files in a directory or make folders, check out the os module. Specifically, try os.listdir and os.mkdir

To copy files, you could either manually open each file, copy the contents to a string, and rewrite it to a different file. Alternatively, look at the shutil module

To run bash scripts, use the subprocess library.

All three of those should be a part of python's standard library.

Upvotes: 0

Related Questions