##// END OF EJS Templates
add %%file magic
MinRK -
Show More
@@ -22,11 +22,13 b' import sys'
22 from pprint import pformat
22 from pprint import pformat
23
23
24 # Our own packages
24 # Our own packages
25 from IPython.core import magic_arguments
25 from IPython.core import oinspect
26 from IPython.core import oinspect
26 from IPython.core import page
27 from IPython.core import page
27 from IPython.core.error import UsageError
28 from IPython.core.error import UsageError
28 from IPython.core.magic import (Magics, compress_dhist, magics_class,
29 from IPython.core.magic import (
29 line_magic)
30 Magics, compress_dhist, magics_class, line_magic, cell_magic
31 )
30 from IPython.testing.skipdoctest import skip_doctest
32 from IPython.testing.skipdoctest import skip_doctest
31 from IPython.utils.io import file_read, nlprint
33 from IPython.utils.io import file_read, nlprint
32 from IPython.utils.path import get_py_filename, unquote_filename
34 from IPython.utils.path import get_py_filename, unquote_filename
@@ -675,3 +677,37 b' class OSMagics(Magics):'
675 return
677 return
676
678
677 page.page(self.shell.pycolorize(cont))
679 page.page(self.shell.pycolorize(cont))
680
681 @magic_arguments.magic_arguments()
682 @magic_arguments.argument(
683 '-f', '--force', action='store_true', default=False,
684 help='Whether to overwrite a file if it already exists'
685 )
686 @magic_arguments.argument(
687 'filename', type=unicode,
688 help='file to write'
689 )
690 @cell_magic
691 def file(self, line, cell):
692 """Write a cell to a file
693
694 %%file [-f] filename
695
696 Writes the contents of the cell to a file.
697
698 Will not overwrite existing files unless `-f` is specified.
699 """
700 args = magic_arguments.parse_argstring(self.file, line)
701 args.filename = unquote_filename(args.filename)
702
703 if os.path.exists(args.filename):
704 if args.force:
705 print("Overwriting %s" % args.filename)
706 else:
707 error("%s already exists! Force overwrite with %%%%file -f\n" % args.filename)
708 return
709 else:
710 print("Writing %s" % args.filename)
711
712 with io.open(args.filename, 'w', encoding='utf-8') as f:
713 f.write(cell)
General Comments 0
You need to be logged in to leave comments. Login now