Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Doc/library/pickletools.rst
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ Command line options
When more than one pickle file are specified, print given preamble
before each disassembly.

.. option:: pickle_file

A pickle file to read, or ``-`` to indicate reading from standard input.



Programmatic Interface
Expand Down
43 changes: 20 additions & 23 deletions Lib/pickletools.py
Original file line number Diff line number Diff line change
Expand Up @@ -2845,7 +2845,7 @@ def __init__(self, value):
description='disassemble one or more pickle files')
parser.add_argument(
'pickle_file',
nargs='*', help='the pickle file')
nargs='+', help='the pickle file')
parser.add_argument(
'-o', '--output',
help='the file where the output should be written')
Expand All @@ -2863,26 +2863,23 @@ def __init__(self, value):
help='if more than one pickle file is specified, print this before'
' each disassembly')
args = parser.parse_args()
if not args.pickle_file:
parser.print_help()
annotate = 30 if args.annotate else 0
memo = {} if args.memo else None
if args.output is None:
output = sys.stdout
else:
annotate = 30 if args.annotate else 0
memo = {} if args.memo else None
if args.output is None:
output = sys.stdout
else:
output = open(args.output, 'w')
try:
for arg in args.pickle_file:
if len(args.pickle_file) > 1:
name = '<stdin>' if arg == '-' else arg
preamble = args.preamble.format(name=name)
output.write(preamble + '\n')
if arg == '-':
dis(sys.stdin.buffer, output, memo, args.indentlevel, annotate)
else:
with open(arg, 'rb') as f:
dis(f, output, memo, args.indentlevel, annotate)
finally:
if output is not sys.stdout:
output.close()
output = open(args.output, 'w')
try:
for arg in args.pickle_file:
if len(args.pickle_file) > 1:
name = '<stdin>' if arg == '-' else arg
preamble = args.preamble.format(name=name)
output.write(preamble + '\n')
if arg == '-':
dis(sys.stdin.buffer, output, memo, args.indentlevel, annotate)
else:
with open(arg, 'rb') as f:
dis(f, output, memo, args.indentlevel, annotate)
finally:
if output is not sys.stdout:
output.close()
Loading