我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用marshal.dump()。
def _write_pyc(state, co, source_stat, pyc): # Technically, we don't have to have the same pyc format as # (C)Python, since these "pycs" should never be seen by builtin # import. However, there's little reason deviate, and I hope # sometime to be able to use imp.load_compiled to load them. (See # the comment in load_module above.) try: fp = open(pyc, "wb") except IOError: err = sys.exc_info()[1].errno state.trace("error writing pyc file at %s: errno=%s" %(pyc, err)) # we ignore any failure to write the cache file # there are many reasons, permission-denied, __pycache__ being a # file etc. return False try: fp.write(imp.get_magic()) mtime = int(source_stat.mtime) size = source_stat.size & 0xFFFFFFFF fp.write(struct.pack("<ll", mtime, size)) marshal.dump(co, fp) finally: fp.close() return True
def process(ifile, ofile): logger.info('Opening file ' + ifile) ifPtr = open(ifile, 'rb') header = ifPtr.read(8) if not header.startswith('\x03\xF3\x0D\x0A'): raise SystemExit('[!] Header mismatch. The input file is not a valid pyc file.') logger.info('Input pyc file header matched') logger.debug('Unmarshalling file') rootCodeObject = marshal.load(ifPtr) ifPtr.close() deob = parse_code_object(rootCodeObject) logger.info('Writing deobfuscated code object to disk') ofPtr = open(ofile, 'wb') ofPtr.write(header) marshal.dump(deob, ofPtr) ofPtr.close() logger.info('Success')
def test_foreign_code(self): py_compile.compile(self.file_name) with open(self.compiled_name, "rb") as f: header = f.read(8) code = marshal.load(f) constants = list(code.co_consts) foreign_code = test_main.__code__ pos = constants.index(1) constants[pos] = foreign_code code = type(code)(code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize, code.co_flags, code.co_code, tuple(constants), code.co_names, code.co_varnames, code.co_filename, code.co_name, code.co_firstlineno, code.co_lnotab, code.co_freevars, code.co_cellvars) with open(self.compiled_name, "wb") as f: f.write(header) marshal.dump(code, f) mod = self.import_module() self.assertEqual(mod.constant.co_filename, foreign_code.co_filename)
def test_multiple_dumps_and_loads(self): # Issue 12291: marshal.load() should be callable multiple times # with interleaved data written by non-marshal code # Adapted from a patch by Engelbert Gruber. data = (1, 'abc', b'def', 1.0, (2, 'a', ['b', b'c'])) for interleaved in (b'', b'0123'): ilen = len(interleaved) positions = [] try: with open(support.TESTFN, 'wb') as f: for d in data: marshal.dump(d, f) if ilen: f.write(interleaved) positions.append(f.tell()) with open(support.TESTFN, 'rb') as f: for i, d in enumerate(data): self.assertEqual(d, marshal.load(f)) if ilen: f.read(ilen) self.assertEqual(positions[i], f.tell()) finally: support.unlink(support.TESTFN)
def test_foreign_code(self): py_compile.compile(self.file_name) with open(self.compiled_name, "rb") as f: header = f.read(8) code = marshal.load(f) constants = list(code.co_consts) foreign_code = test_main.func_code pos = constants.index(1) constants[pos] = foreign_code code = type(code)(code.co_argcount, code.co_nlocals, code.co_stacksize, code.co_flags, code.co_code, tuple(constants), code.co_names, code.co_varnames, code.co_filename, code.co_name, code.co_firstlineno, code.co_lnotab, code.co_freevars, code.co_cellvars) with open(self.compiled_name, "wb") as f: f.write(header) marshal.dump(code, f) mod = self.import_module() self.assertEqual(mod.constant.co_filename, foreign_code.co_filename)
def save_views(self): # save the current color self.__optiondb['RED'] = self.__red self.__optiondb['GREEN'] = self.__green self.__optiondb['BLUE'] = self.__blue for v in self.__views: if hasattr(v, 'save_options'): v.save_options(self.__optiondb) # save the name of the file used for the color database. we'll try to # load this first. self.__optiondb['DBFILE'] = self.__colordb.filename() fp = None try: try: fp = open(self.__initfile, 'w') except IOError: print >> sys.stderr, 'Cannot write options to file:', \ self.__initfile else: marshal.dump(self.__optiondb, fp) finally: if fp: fp.close()
def test_foreign_code(self): py_compile.compile(self.file_name) with open(self.compiled_name, "rb") as f: header = f.read(12) code = marshal.load(f) constants = list(code.co_consts) foreign_code = test_main.__code__ pos = constants.index(1) constants[pos] = foreign_code code = type(code)(code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize, code.co_flags, code.co_code, tuple(constants), code.co_names, code.co_varnames, code.co_filename, code.co_name, code.co_firstlineno, code.co_lnotab, code.co_freevars, code.co_cellvars) with open(self.compiled_name, "wb") as f: f.write(header) marshal.dump(code, f) mod = self.import_module() self.assertEqual(mod.constant.co_filename, foreign_code.co_filename)
def set_new_path(self, new_idf_path): if self.path != new_idf_path: self.path = new_idf_path cache_file = "idf.cache" cache_file = os.path.join(tempfile.gettempdir(), cache_file) try: with open(cache_file, 'rb') as cf: self.idf_freq, self.median_idf = marshal.load(cf) # print("Loading model from cache %s" % cache_file) except Exception: content = open(new_idf_path, 'rb').read().decode('utf-8') self.idf_freq = {} for line in content.splitlines(): word, freq = line.strip().split(' ') self.idf_freq[word] = float(freq) self.median_idf = sorted( self.idf_freq.values())[len(self.idf_freq) // 2] with open(cache_file, 'wb') as cf: marshal.dump((self.idf_freq, self.median_idf), cf)
def dump_stats(self, file): f = open(file, 'wb') self.create_stats() marshal.dump(self.stats, f) f.close()
def _compile(pathname, timestamp): """Compile (and cache) a Python source file. The file specified by <pathname> is compiled to a code object and returned. Presuming the appropriate privileges exist, the bytecodes will be saved back to the filesystem for future imports. The source file's modification timestamp must be provided as a Long value. """ codestring = open(pathname, 'rU').read() if codestring and codestring[-1] != '\n': codestring = codestring + '\n' code = __builtin__.compile(codestring, pathname, 'exec') # try to cache the compiled code try: f = open(pathname + _suffix_char, 'wb') except IOError: pass else: f.write('\0\0\0\0') f.write(struct.pack('<I', timestamp)) marshal.dump(code, f) f.flush() f.seek(0, 0) f.write(imp.get_magic()) f.close() return code
def dump_stats(self, filename): """Write the profile data to a file we know how to load back.""" f = file(filename, 'wb') try: marshal.dump(self.stats, f) finally: f.close() # list the tuple indices and directions for sorting, # along with some printable description
def marshal_dump(code, f): if isinstance(f, file): marshal.dump(code, f) else: f.write(marshal.dumps(code))
def write_bytecode(self, f): """Dump the bytecode into the file or file like object passed.""" if self.code is None: raise TypeError('can\'t write empty bucket') f.write(bc_magic) pickle.dump(self.checksum, f, 2) marshal_dump(self.code, f)
def dump_marshal(data, path_to_file): try: with open(path_to_file, 'w') as f: m.dump(data, f) except Exception as e: raise e
def dump_pickle(data, path_to_file): try: with open(path_to_file, 'w') as f: pickle.dump(data, f) except Exception as e: raise e
def dump_json(data, file): try: with open(file, 'w') as datafile: json.dump(data, datafile) except Exception as e: raise e
def _make_rewritten_pyc(state, source_stat, pyc, co): """Try to dump rewritten code to *pyc*.""" if sys.platform.startswith("win"): # Windows grants exclusive access to open files and doesn't have atomic # rename, so just write into the final file. _write_pyc(state, co, source_stat, pyc) else: # When not on windows, assume rename is atomic. Dump the code object # into a file specific to this process and atomically replace it. proc_pyc = pyc + "." + str(os.getpid()) if _write_pyc(state, co, source_stat, proc_pyc): os.rename(proc_pyc, pyc)
def dump(self, f): f.write(self.getPycHeader()) marshal.dump(self.code, f)
def dump_stats(self, file): import marshal f = open(file, 'wb') self.create_stats() marshal.dump(self.stats, f) f.close()
def dump(self): """Print all learned patterns, for debugging purposes.""" pprint.pprint(self._root)
def save(self, filename): """Dump the current patterns to the file specified by filename. To restore later, use restore(). """ try: outFile = open(filename, "wb") marshal.dump(self._templateCount, outFile) marshal.dump(self._botName, outFile) marshal.dump(self._root, outFile) outFile.close() except Exception, e: logger.error("Error saving PatternMgr to file %s:" % filename) raise Exception, e
def handle_item(path, item): marshal.dump((path, item), sys.stdout) return True
def handle_item(path, item): marshal.dump((path, item), stdout) return True
def compile_pyc(self, output_file): '''[py] Compile the program into a Python bytecode file.''' import imp import marshal output_file.write(imp.get_magic()) output_file.write('\x00\x00\x00\x00') pyc = self.to_pyc() pyo = pyc.to_code() marshal.dump(pyo, output_file)