<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def calacs(input_file, exec_path=None, time_stamps=False, temp_files=False, verbose=False, debug=False, quiet=False, single_core=False, exe_args=None):
 """ Run the calacs.e executable as from the shell. By default this will run the calacs given by 'calacs.e'. Parameters input_file : str Name of input file. exec_path : str, optional The complete path to a calacs executable. time_stamps : bool, optional Set to True to turn on the printing of time stamps. temp_files : bool, optional Set to True to have CALACS save temporary files. verbose : bool, optional Set to True for verbose output. debug : bool, optional Set to True to turn on debugging output. quiet : bool, optional Set to True for quiet output. single_core : bool, optional CTE correction in CALACS will by default try to use all available CPUs on your computer. Set this to True to force the use of just one CPU. exe_args : list, optional Arbitrary arguments passed to underlying executable call. Note: Implementation uses subprocess.call and whitespace is not permitted. E.g. use exe_args=['--nThreads', '1'] """

    if exec_path:
        if not os.path.exists(exec_path):
            raise OSError('Executable not found: ' + exec_path)

        call_list = [exec_path]
    else:
        call_list = ['calacs.e']

    if time_stamps:
        call_list.append('-t')

    if temp_files:
        call_list.append('-s')

    if verbose:
        call_list.append('-v')

    if debug:
        call_list.append('-d')

    if quiet:
        call_list.append('-q')

    if single_core:
        call_list.append('-1')

    if not os.path.exists(input_file):
        raise IOError('Input file not found: ' + input_file)

    call_list.append(input_file)

    if exe_args:
        call_list.extend(exe_args)

    subprocess.check_call(call_list)