Home > Net >  python script calling another script
python script calling another script

Time:08-24

I wrote a python script that works. The first line of my script is reading an hdf5 file

readFile = h5py.File('FileName_00','r')

After reading the file, my script does several mathematical operations, successfully working. In the output I got function F.

Now, I want to repeat the same script for different files. Basically, I only need to modify FileName_00 by FimeName_01 or ....FileName_10. I was thinking to create a script that call this script!

I never wrote a script that call another script, so any advice would be appreciable.

CodePudding user response:

One option: turn your existing code into a function which takes a filename as an argument:

def myfunc(filename):
  h5py.file(filename, 'r')
  ...

Now, after your existing code, call your function with the filenames you want to input:

myfunc('Filename_00')   
myfunc('Filename_01')
myfunc('Filename_02')
...

Even more usefully, I definitely recommend looking into

if(__name__ == '__main__')

and argparse (https://docs.python.org/3/library/argparse.html) as jkr noted.

Also, if you put your algorithm in a function like this, you can import it and use it in another Python script. Very useful!

CodePudding user response:

Although there are certainly many ways to achieve what you want without multiple python scripts, as other answerers have shown, here's how you could do it.

In python we have this function os.system (learn more about it here: https://docs.python.org/3/library/os.html#os.system). Simply put, you can use it like this:

os.system("INSERT COMMAND HERE")

Replacing INSERT COMMAND HERE with the command you use to run your python script. For example, with a script named script.py you could conceivably (depending on your environment) include the following line of code in a secondary python script:

os.system("python script.py")

Running the secondary python script would run script.py as well. FWIW, I don't necessarily think this is the best way to accomplish your goal -- I tend to agree with DraftyHat's solution in most circumstances. But in case you were curious, this is certainly an option in python. I've used this functionality in the past, albeit not to run other python scripts, but to execute commands in the shell. Hope this helps!

  • Related