Os Command class

class os_command_py.os_command.Command(list_cmd, my_env=None, prefix='-', **kwargs)

The Command class is a way to launch bash command and mainly gromacs

Parameters:
  • cmd (list) – command list
  • env (dict) – environment variable
  • prefix (str, opional, default "-") – argument prefix
Example:
>>> # Simple ls command
>>>
>>> cmd_list = ['ls', '-a', TEST_PATH]
>>> cmd_test = Command(list_cmd=cmd_list)
>>> cmd_test.display() #doctest: +ELLIPSIS
ls -a ...input
>>> return_code = cmd_test.run(out_data=True)
>>> print(return_code['stdout']) #doctest: +ELLIPSIS
.
..
1y0m.pdb
volume.xvg
<BLANKLINE>
>>> # Not Working command:
>>>
>>> cmd_list = ['ls', '-a', '/NON_EXISTING_FILE']
>>> cmd_test = Command(list_cmd=cmd_list)
>>> cmd_test.display() #doctest: +ELLIPSIS
ls -a ...NON_EXISTING_FILE
>>> try:
...     cmd_test.run()
... except RuntimeError:
...     print('Command failed') #doctest: +ELLIPSIS
The following command could not be executed correctly :
ls -a ...NON_EXISTING_FILE
Command failed
>>> # Word Count
>>> cmd_list = ['wc', os.path.join(TEST_PATH,'1y0m.pdb')]
>>> cmd_test_2 = Command(list_cmd=cmd_list)
>>> cmd_test_2.display() #doctest: +ELLIPSIS
wc ...1y0m.pdb
>>> return_code = cmd_test_2.run(out_data=True)
>>> print('Number of line = {}  word = {} char = {}'.format(    *return_code['stdout'].split()[:3])) #doctest: +ELLIPSIS
Number of line = 1627  word = 18466 char = 13...
define_env(my_env)

Define the environment of the Command object.

Example:
>>> print(os.getenv('USELESS'))
None
>>> cmd_list = ['ls', '-lsh']
>>> cmd_test = Command(list_cmd=cmd_list)
>>> cmd_test.display() #doctest: +ELLIPSIS
ls -lsh
>>> cmd_test.define_env(os.environ.update({'USELESS': 'Changed'}))
>>> return_code = cmd_test.run(out_data=True)
>>> print(os.getenv('USELESS'))
Changed
display()

Show Command object that will be launch. Show only the name of the command (eg. gmx) instead of the full path. Show relative path for files in the command.

display_raw()

Show Command object that will be launch. Show the full path of the command as well as the full path for files in the command.

run(com_input='', display=False, out_data=False)

Launch Command object that will be launch. return programm output is out_data is set to True

Parameters:
  • com_input (str) – input for the command
  • display (bool) – option to display output
  • out_data (bool) – option to return output data
Returns:

Return Code or output dict

Return type:

bool/dict

run_background(func_input_dict, com_input='', display=False, out_data=False)

Launch Command object that will be launch. Will the command is running launch the function using func_input_dict as argument. return programm output is out_data is set to True

Parameters:
  • function (function) – function to be launch
  • func_input_dict (dict) – input for the function
  • com_input (str) – input for the command
  • display (bool) – option to display output
  • out_data (bool) – option to return output data
Returns:

Return Code or output dict

Return type:

bool/dict

Example:

>>> import time
>>>
>>> # Create the function that will run while the command is running
>>> def function_iter(proc, dict):
...     while proc.poll() is None:
...         time.sleep(dict['refresh_time'])
...         print('X', end='')
>>>
>>> monitor = {'function': function_iter,
...            'refresh_time': 0.1}
>>>
>>> # Create the command
>>> cmd_list = ['sleep', '1']
>>> background_test = Command(list_cmd=cmd_list)
>>> background_test.display() #doctest: +ELLIPSIS
sleep 1
>>> return_code = background_test.run_background(monitor,
...                                              display=True)        #doctest: +ELLIPSIS
XXXXXX...sleep 1
None
<BLANKLINE>
<BLANKLINE>