Python subprocess.PIPE Examples
The following are 30
code examples of subprocess.PIPE().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
subprocess
, or try the search function
.
Example #1
Source File: test.py From aegea with Apache License 2.0 | 16 votes |
def call(self, cmd, **kwargs): print('Running "{}"'.format(cmd), file=sys.stderr) expect = kwargs.pop("expect", [dict(return_codes=[os.EX_OK], stdout=None, stderr=None)]) process = subprocess.Popen(cmd, stdin=kwargs.get("stdin", subprocess.PIPE), stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kwargs) out, err = process.communicate() return_code = process.poll() out = out.decode(sys.stdin.encoding) err = err.decode(sys.stdin.encoding) def match(return_code, out, err, expected): exit_ok = return_code in expected["return_codes"] stdout_ok = re.search(expected.get("stdout") or "", out) stderr_ok = re.search(expected.get("stderr") or "", err) return exit_ok and stdout_ok and stderr_ok if not any(match(return_code, out, err, exp) for exp in expect): print(err) e = subprocess.CalledProcessError(return_code, cmd, output=out) e.stdout, e.stderr = out, err raise e return self.SubprocessResult(out, err, return_code)
Example #2
Source File: core.py From BASS with GNU General Public License v2.0 | 9 votes |
def get_num_triggering_samples(signature, samples): """ Get number of samples triggering ClamAV signature _signature_. :param signature: A dictionary with keys 'type' for the signature type and 'signature' for the signature string. :param samples: A list of sample paths to scan. :returns: The number of samples triggering this signature. """ handle, temp_sig = tempfile.mkstemp(suffix = "." + signature["type"]) try: with os.fdopen(handle, "w") as f: f.write(signature["signature"]) proc_clamscan = subprocess.Popen(["clamscan", "-d", temp_sig, "--no-summary", "--infected"] + samples, stdout = subprocess.PIPE, stderr = subprocess.PIPE) stdout, stderr = proc_clamscan.communicate() if not stdout: return 0 else: return len(stdout.strip().split("\n")) finally: os.unlink(temp_sig)
Example #3
Source File: inst.py From kaldi-python-io with Apache License 2.0 | 9 votes |
def pipe_fopen(command, mode, background=True): if mode not in ["rb", "r"]: raise RuntimeError("Now only support input from pipe") p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) def background_command_waiter(command, p): p.wait() if p.returncode != 0: warnings.warn("Command \"{0}\" exited with status {1}".format( command, p.returncode)) _thread.interrupt_main() if background: thread = threading.Thread(target=background_command_waiter, args=(command, p)) # exits abnormally if main thread is terminated . thread.daemon = True thread.start() else: background_command_waiter(command, p) return p.stdout
Example #4
Source File: alignproc.py From svviz with MIT License | 8 votes |
def alignProcWrapper(ref, seq): cmd = "python {} {} {}".format( os.path.realpath(__file__), ref, seq) proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = proc.communicate() if proc.returncode != 0: return None fields = out.split() strand = fields[0].decode() aln = Aln(int(fields[1]), int(fields[2]), fields[3].decode(), int(fields[4]), int(fields[5])) return strand, aln
Example #5
Source File: sifter.py From sandsifter with BSD 3-Clause "New" or "Revised" License | 8 votes |
def disas_objdump(b): with open("/dev/shm/shifter", "w") as f: f.write(b) if arch == "64": dis, errors = subprocess.Popen("objdump -D --insn-width=256 -b binary \ -mi386 -Mx86-64 /dev/shm/shifter | head -8 | tail -1", stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).communicate() else: dis, errors = subprocess.Popen("objdump -D --insn-width=256 -b binary \ -mi386 /dev/shm/shifter | head -8 | tail -1", stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).communicate() dis = dis[6:] # address raw = dis[:256*3].replace(" ","") dis = dis[256*3:].strip().split(None, 2) mnemonic = dis[0] if len(dis) > 1: op_str = dis[1] else: op_str = "" if mnemonic == "(bad)": mnemonic = "(unk)" insn = "" op_str = "" size = len(raw)/2 return (mnemonic, op_str, size)
Example #6
Source File: setup.py From EDeN with MIT License | 7 votes |
def update_version_py(): if not os.path.isdir(".git"): print("This does not appear to be a Git repository.") return try: # p = subprocess.Popen(["git", "describe","--tags", "--always"], # stdout=subprocess.PIPE) p = subprocess.Popen("git rev-list HEAD --count".split(), stdout=subprocess.PIPE) except EnvironmentError: print("unable to run git, leaving eden/_version.py alone") return stdout = p.communicate()[0] if p.returncode != 0: print("unable to run git, leaving eden/_version.py alone") return ver = "0.3."+stdout.strip() # ver = str(int(ver,16)) # pypi doesnt like base 16 f = open("eden/_version.py", "w") f.write(VERSION_PY % ver) f.close() print("set eden/_version.py to '%s'" % ver)
Example #7
Source File: osdriver.py From multibootusb with GNU General Public License v2.0 | 7 votes |
def dd_iso_image(self, input_, output, gui_update, status_update): ''' Implementation for OS that use dd to write the iso image. ''' in_file_size = os.path.getsize(input_) cmd = [self.dd_exe, 'if=' + input_, 'of=' + self.physical_disk(output), 'bs=1M'] self.dd_iso_image_add_args(cmd, input_, output) kw_args = { 'stdout' : subprocess.PIPE, 'stderr' : subprocess.PIPE, 'shell' : False, } self.add_dd_iso_image_popen_args(kw_args) self.dd_iso_image_prepare(input, output, status_update) log('Executing => ' + str(cmd)) dd_process = subprocess.Popen(cmd, **kw_args) output_q = queue.Queue() while dd_process.poll() is None: self.dd_iso_image_readoutput(dd_process, gui_update, in_file_size, output_q) output_lines = [output_q.get() for i in range(output_q.qsize())] for l in output_lines: log('dd: ' + l) return self.dd_iso_image_interpret_result( dd_process.returncode, output_lines)
Example #8
Source File: straight_dope_test_utils.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 7 votes |
def _run_command(cmd, timeout_secs=300): """ Runs a command with a specified timeout. Args: cmd : list of string The command with arguments to run. timeout_secs: integer The timeout in seconds Returns: Returns the process and the output as a pair. """ proc = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for i in range(timeout_secs): sleep(1) if proc.poll() is not None: (out, _) = proc.communicate() return proc, out.decode('utf-8') proc.kill() return proc, "Timeout of %s secs exceeded." % timeout_secs
Example #9
Source File: calcs.py From mlearn with BSD 3-Clause "New" or "Revised" License | 6 votes |
def calculate(self): """ Calculate the vacancy formation given Potential class. """ with ScratchDir('.'): input_file, energy_per_atom, num_atoms = self._setup() p = subprocess.Popen([self.LMP_EXE, '-in', input_file], stdout=subprocess.PIPE) stdout = p.communicate()[0] rc = p.returncode if rc != 0: error_msg = 'LAMMPS exited with return code %d' % rc msg = stdout.decode("utf-8").split('\n')[:-1] try: error_line = [i for i, m in enumerate(msg) if m.startswith('ERROR')][0] error_msg += ', '.join([e for e in msg[error_line:]]) except Exception: error_msg += msg[-1] raise RuntimeError(error_msg) defect_energy, _, _ = self._parse() defect_formation_energy = defect_energy - energy_per_atom * num_atoms return defect_formation_energy
Example #10
Source File: interface.py From XFLTReaT with MIT License | 6 votes |
def mac_set_ip_address(self, dev, ip, serverip, netmask): ifr = struct.pack('<16sBBHIIIBBHIIIBBHIII', self.iface_name, 16, socket.AF_INET, 0, struct.unpack('<L', socket.inet_pton(socket.AF_INET, ip))[0], 0, 0, 16, socket.AF_INET, 0, struct.unpack('<L', socket.inet_pton(socket.AF_INET, serverip))[0], 0, 0, 16, 0, 0, struct.unpack('<L', socket.inet_pton(socket.AF_INET, "255.255.255.255"))[0], 0, 0) try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) fcntl.ioctl(sock, self.IOCTL_MACOSX_SIOCAIFADDR, ifr) except Exception as e: common.internal_print("Something went wrong with setting up the interface.", -1) print(e) sys.exit(-1) # adding new route for forwarding packets properly. integer_ip = struct.unpack(">I", socket.inet_pton(socket.AF_INET, serverip))[0] rangeip = socket.inet_ntop(socket.AF_INET, struct.pack(">I", integer_ip & ((2**int(netmask))-1)<<32-int(netmask))) ps = subprocess.Popen(["route", "add", "-net", rangeip+"/"+netmask, serverip], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: if not "File exists" in stderr: common.internal_print("Error: adding client route: {0}".format(stderr), -1) sys.exit(-1) return
Example #11
Source File: interface.py From XFLTReaT with MIT License | 6 votes |
def mac_set_intermediate_route(self, serverip, proxyip): common.internal_print("Changing route table for intermediate hop") ps = subprocess.Popen(["route", "delete", serverip, self.orig_default_gw], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: common.internal_print("Error: delete old route: {0}".format(stderr), -1) sys.exit(-1) ps = subprocess.Popen(["route", "add", "-net", proxyip, self.orig_default_gw, "255.255.255.255"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: if not "File exists" in stderr: common.internal_print("Error: adding server route: {0}".format(stderr), -1) sys.exit(-1) return
Example #12
Source File: versioneer.py From aospy with Apache License 2.0 | 6 votes |
def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None): """Call the given command(s).""" assert isinstance(commands, list) p = None for c in commands: try: dispcmd = str([c] + args) # remember shell=False, so use git.cmd on windows, not just git p = subprocess.Popen([c] + args, cwd=cwd, env=env, stdout=subprocess.PIPE, stderr=(subprocess.PIPE if hide_stderr else None)) break except EnvironmentError: e = sys.exc_info()[1] if e.errno == errno.ENOENT: continue if verbose: print("unable to run %s" % dispcmd) print(e) return None, None else: if verbose: print("unable to find command, tried %s" % (commands,)) return None, None stdout = p.communicate()[0].strip() if sys.version_info[0] >= 3: stdout = stdout.decode() if p.returncode != 0: if verbose: print("unable to run %s (error)" % dispcmd) print("stdout was %s" % stdout) return None, p.returncode return stdout, p.returncode
Example #13
Source File: utils.py From Att-ChemdNER with Apache License 2.0 | 6 votes |
def get_perf(filename): ''' run conlleval.pl perl script to obtain precision/recall and F1 score ''' _conlleval = PREFIX + 'conlleval' if not isfile(_conlleval): #download('http://www-etud.iro.umontreal.ca/~mesnilgr/atis/conlleval.pl') os.system('wget https://www.comp.nus.edu.sg/%7Ekanmy/courses/practicalNLP_2008/packages/conlleval.pl') chmod('conlleval.pl', stat.S_IRWXU) # give the execute permissions out = [] proc = subprocess.Popen(["perl", _conlleval], stdin=subprocess.PIPE, stdout=subprocess.PIPE) stdout, _ = proc.communicate(open(filename).read()) for line in stdout.split('\n'): if 'accuracy' in line: out = line.split() break # out = ['accuracy:', '16.26%;', 'precision:', '0.00%;', 'recall:', '0.00%;', 'FB1:', '0.00'] precision = float(out[3][:-2]) recall = float(out[5][:-2]) f1score = float(out[7]) return {'p':precision, 'r':recall, 'f1':f1score}
Example #14
Source File: setup.py From EDeN with MIT License | 6 votes |
def checkProgramIsInstalled(self, program, args, where_to_download, affected_tools): try: subprocess.Popen([program, args], stderr=subprocess.PIPE, stdout=subprocess.PIPE) return True except EnvironmentError: # handle file not found error. # the config file is installed in: msg = "\n**{0} not found. This " \ "program is needed for the following "\ "tools to work properly:\n"\ " {1}\n"\ "{0} can be downloaded from here:\n " \ " {2}\n".format(program, affected_tools, where_to_download) sys.stderr.write(msg) except Exception as e: sys.stderr.write("Error: {}".format(e))
Example #15
Source File: interface.py From XFLTReaT with MIT License | 6 votes |
def win_check_default_route(self): # get default gateway ps = subprocess.Popen(["route", "-4", "PRINT", "0.0.0.0"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: common.internal_print("Checking default route failed: {0}".format(stderr), -1) sys.exit(-1) # count default routes default_routes = 0 for line in stdout[0:stdout.find("Persistent Routes:")].split("\n"): if "0.0.0.0" in line: default_routes += 1 if not default_routes: common.internal_print("No default route. Please set up your routing before executing the tool", -1) sys.exit(-1) return
Example #16
Source File: interface.py From XFLTReaT with MIT License | 6 votes |
def win_set_intermediate_route(self, serverip, proxyip): common.internal_print("Changing route table for intermediate hop") # delete original default route ps = subprocess.Popen(["route", "DELETE", serverip, self.orig_default_gw], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: common.internal_print("Delete server route failed: {0}".format(stderr), -1) sys.exit(-1) # add intermediate route ps = subprocess.Popen(["route", "ADD", proxyip, "MASK", "255.255.255.255", self.orig_default_gw], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: common.internal_print("Add intermediate route failed: {0}".format(stderr), -1) sys.exit(-1) return
Example #17
Source File: export.py From svviz with MIT License | 6 votes |
def checkInkscape(): try: subprocess.check_call("inkscape --version", stdout=subprocess.PIPE, shell=True) return True except subprocess.CalledProcessError: return False
Example #18
Source File: interface.py From XFLTReaT with MIT License | 6 votes |
def win_restore_routes(self, serverip, clientip, ip): common.internal_print("Restoring default route") ps = subprocess.Popen(["route", "DELETE", serverip, self.orig_default_gw], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: common.internal_print("Delete server route failed: {0}".format(stderr), -1) sys.exit(-1) ps = subprocess.Popen(["route", "-p", "DELETE", "0.0.0.0", ip], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: common.internal_print("Delete default route failed: {0}".format(stderr), -1) sys.exit(-1) ps = subprocess.Popen(["route", "ADD", "0.0.0.0", "MASK", "0.0.0.0", self.orig_default_gw], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: common.internal_print("Add original default route failed: {0}".format(stderr), -1) sys.exit(-1) return
Example #19
Source File: interface.py From XFLTReaT with MIT License | 6 votes |
def WIN_get_interface_index(self): iface_name = self.WIN_get_subinterface_name() ps = subprocess.Popen(["netsh", "interface", "ipv4", "show", "interfaces"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr != "": common.internal_print("Show interfaces. netsh failed: {0}".format(stdout), -1) sys.exit(-1) for line in stdout.split("\n"): if iface_name in line: i = 0 while line[i:i+1] == " ": i += 1 return int(line[i:].split(" ")[0]) return -1
Example #20
Source File: interface.py From XFLTReaT with MIT License | 6 votes |
def lin_set_intermediate_route(self, serverip, proxyip): common.internal_print("Changing route table for intermediate hop") ps = subprocess.Popen(["route", "delete", serverip, "gw", self.orig_default_gw], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: common.internal_print("Error: delete old route: {0}".format(stderr), -1) sys.exit(-1) ps = subprocess.Popen(["route", "add", "-host", proxyip, "gw", self.orig_default_gw], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: if not "File exists" in stderr: common.internal_print("Error: adding server route: {0}".format(stderr), -1) sys.exit(-1) return
Example #21
Source File: interface.py From XFLTReaT with MIT License | 6 votes |
def lin_check_default_route(self): # get default gateway(s) ps = subprocess.Popen(["route", "-n"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr != "": common.internal_print("Route error: {0}".format(stderr), -1) sys.exit(-1) lines = stdout.split("\n") default_route_number = 0 for line in lines: if line[0:7] == "0.0.0.0": default_route_number += 1 if default_route_number < 1: common.internal_print("No default route. Please set up your routing before executing the tool", -1) sys.exit(-1) if default_route_number > 1: common.internal_print("More than one default route. This should be reviewed before executing the tool.", -1) sys.exit(-1) return
Example #22
Source File: interface.py From XFLTReaT with MIT License | 6 votes |
def lin_set_ip_address(self, dev, ip, serverip, netmask): sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: # set IP ifr = struct.pack('<16sH2s4s8s', dev, socket.AF_INET, "\x00"*2, socket.inet_aton(ip), "\x00"*8) fcntl.ioctl(sockfd, self.IOCTL_LINUX_SIOCSIFADDR, ifr) # get flags ifr = struct.pack('<16sh', dev, 0) flags = struct.unpack('<16sh', fcntl.ioctl(sockfd, self.IOCTL_LINUX_SIOCSIFFLAGS, ifr))[1] # set new flags flags = flags | self.IOCTL_LINUX_IFF_UP ifr = struct.pack('<16sh', dev, flags) # iface up fcntl.ioctl(sockfd, self.IOCTL_LINUX_SIOCSIFFLAGS, ifr) except Exception as e: common.internal_print("Something went wrong with setting up the interface.", -1) print(e) sys.exit(-1) # adding new route for forwarding packets properly. integer_ip = struct.unpack(">I", socket.inet_pton(socket.AF_INET, serverip))[0] rangeip = socket.inet_ntop(socket.AF_INET, struct.pack(">I", integer_ip & ((2**int(netmask))-1)<<32-int(netmask))) integer_netmask = struct.pack(">I", ((2**int(netmask))-1)<<32-int(netmask)) netmask = socket.inet_ntoa(integer_netmask) ps = subprocess.Popen(["route", "add", "-net", rangeip, "netmask", netmask, "dev", dev], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: if not "File exists" in stderr: common.internal_print("Error: adding client route: {0}".format(stderr), -1) sys.exit(-1) return
Example #23
Source File: _cpmodpy.py From cherrypy with BSD 3-Clause "New" or "Revised" License | 6 votes |
def popen(fullcmd): p = subprocess.Popen(fullcmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True) return p.stdout
Example #24
Source File: calcs.py From mlearn with BSD 3-Clause "New" or "Revised" License | 6 votes |
def calculate(self): """ Calculate the elastic constant given Potential class. """ with ScratchDir('.'): input_file = self._setup() p = subprocess.Popen([self.LMP_EXE, '-in', input_file], stdout=subprocess.PIPE) stdout = p.communicate()[0] rc = p.returncode if rc != 0: error_msg = 'LAMMPS exited with return code %d' % rc msg = stdout.decode("utf-8").split('\n')[:-1] try: error_line = [i for i, m in enumerate(msg) if m.startswith('ERROR')][0] error_msg += ', '.join([e for e in msg[error_line:]]) except Exception: error_msg += msg[-1] raise RuntimeError(error_msg) result = self._parse() return result
Example #25
Source File: ICMP.py From XFLTReaT with MIT License | 6 votes |
def communication_initialization(self): self.clients = [] if self.serverorclient: if self.os_type == common.OS_LINUX: ps = subprocess.Popen(["cat", "/proc/sys/net/ipv4/icmp_echo_ignore_all"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = ps.communicate() if stderr: common.internal_print("Error: deleting default route: {0}".format(stderr), -1) sys.exit(-1) self.orig_ieia_value = stdout[0:1] os.system("echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all") if self.serverorclient: self.ICMP_send = self.icmp.ICMP_ECHO_RESPONSE else: self.ICMP_send = self.icmp.ICMP_ECHO_REQUEST return
Example #26
Source File: osdriver.py From multibootusb with GNU General Public License v2.0 | 6 votes |
def gpt_device(self, dev_name): disk_dev = self.physical_disk(dev_name) cmd = ['parted', disk_dev, '-s', 'print'] with open(os.devnull) as devnull: p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=devnull) _cmd_out, _err_out = p.communicate() p.wait() if p.returncode != 0: lang = os.getenv('LANG') encoding = lang.rsplit('.')[-1] if lang else 'utf-8' raise RuntimeError(str(_err_out, encoding)) subprocess.check_call(['partprobe', disk_dev]) if b'msdos' in _cmd_out: return False if b'gpt' in _cmd_out: return True raise RuntimeError("Disk '%s' is uninitialized and not usable." % disk_dev)
Example #27
Source File: setup.py From mmdetection with Apache License 2.0 | 6 votes |
def get_git_hash(): def _minimal_ext_cmd(cmd): # construct minimal environment env = {} for k in ['SYSTEMROOT', 'PATH', 'HOME']: v = os.environ.get(k) if v is not None: env[k] = v # LANGUAGE is used on win32 env['LANGUAGE'] = 'C' env['LANG'] = 'C' env['LC_ALL'] = 'C' out = subprocess.Popen( cmd, stdout=subprocess.PIPE, env=env).communicate()[0] return out try: out = _minimal_ext_cmd(['git', 'rev-parse', 'HEAD']) sha = out.strip().decode('ascii') except OSError: sha = 'unknown' return sha
Example #28
Source File: sifter.py From sandsifter with BSD 3-Clause "New" or "Revised" License | 6 votes |
def start(self): self.command = "%s %s -%c -R %s -s %d" % \ ( INJECTOR, " ".join(self.settings.args), self.settings.synth_mode, "-0" if self.settings.root else "", self.settings.seed ) self.process = subprocess.Popen( "exec %s" % self.command, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, preexec_fn=os.setsid )
Example #29
Source File: calcs.py From mlearn with BSD 3-Clause "New" or "Revised" License | 6 votes |
def calculate(self): """ Calculate the NEB barrier given Potential class. """ with ScratchDir('.'): input_file = self._setup() p = subprocess.Popen(['mpirun', '-n', str(self.num_replicas), 'lmp_mpi', '-partition', '{}x1'.format(self.num_replicas), '-in', input_file], stdout=subprocess.PIPE) stdout = p.communicate()[0] rc = p.returncode if rc != 0: error_msg = 'LAMMPS exited with return code %d' % rc msg = stdout.decode("utf-8").split('\n')[:-1] try: error_line = [i for i, m in enumerate(msg) if m.startswith('ERROR')][0] error_msg += ', '.join([e for e in msg[error_line:]]) except Exception: error_msg += msg[-1] raise RuntimeError(error_msg) result = self._parse() return result
Example #30
Source File: calcs.py From mlearn with BSD 3-Clause "New" or "Revised" License | 5 votes |
def calculate(self, structures): """ Perform the calculation on a series of structures. Args: structures [Structure]: Input structures in a list. Returns: List of computed data corresponding to each structure, varies with different subclasses. """ for s in structures: assert self._sanity_check(s) is True, \ 'Incompatible structure found' ff_elements = None if hasattr(self, 'element_profile'): ff_elements = self.element_profile.keys() with ScratchDir('.'): input_file = self._setup() data = [] for s in structures: ld = LammpsData.from_structure(s, ff_elements) ld.write_file('data.static') p = subprocess.Popen([self.LMP_EXE, '-in', input_file], stdout=subprocess.PIPE) stdout = p.communicate()[0] rc = p.returncode if rc != 0: error_msg = 'LAMMPS exited with return code %d' % rc msg = stdout.decode("utf-8").split('\n')[:-1] try: error_line = [i for i, m in enumerate(msg) if m.startswith('ERROR')][0] error_msg += ', '.join([e for e in msg[error_line:]]) except Exception: error_msg += msg[-1] raise RuntimeError(error_msg) results = self._parse() data.append(results) return data