Tôi đã có vấn đề này và cố gắng tìm giải pháp trực tuyến. Mặc dù tôi đã tìm thấy một số giải pháp, chúng vẫn có một số vấn đề, ví dụ, việc Untitled.txt
tạo tự động gây phiền nhiễu khi bạn khởi động một máy tính xách tay mới từ bảng điều khiển.
Vì vậy, cuối cùng tôi đã viết giải pháp của riêng mình :
import io
import os
import re
from nbconvert.exporters.script import ScriptExporter
from notebook.utils import to_api_path
def script_post_save(model, os_path, contents_manager, **kwargs):
"""Save a copy of notebook to the corresponding language source script.
For example, when you save a `foo.ipynb` file, a corresponding `foo.py`
python script will also be saved in the same directory.
However, existing config files I found online (including the one written in
the official documentation), will also create an `Untitile.txt` file when
you create a new notebook, even if you have not pressed the "save" button.
This is annoying because we usually will rename the notebook with a more
meaningful name later, and now we have to rename the generated script file,
too!
Therefore we make a change here to filter out the newly created notebooks
by checking their names. For a notebook which has not been given a name,
i.e., its name is `Untitled.*`, the corresponding source script will not be
saved. Note that the behavior also applies even if you manually save an
"Untitled" notebook. The rationale is that we usually do not want to save
scripts with the useless "Untitled" names.
"""
# only process for notebooks
if model["type"] != "notebook":
return
script_exporter = ScriptExporter(parent=contents_manager)
base, __ = os.path.splitext(os_path)
# do nothing if the notebook name ends with `Untitled[0-9]*`
regex = re.compile(r"Untitled[0-9]*$")
if regex.search(base):
return
script, resources = script_exporter.from_filename(os_path)
script_fname = base + resources.get('output_extension', '.txt')
log = contents_manager.log
log.info("Saving script at /%s",
to_api_path(script_fname, contents_manager.root_dir))
with io.open(script_fname, "w", encoding="utf-8") as f:
f.write(script)
c.FileContentsManager.post_save_hook = script_post_save
Để sử dụng tập lệnh này, bạn có thể thêm nó vào ~/.jupyter/jupyter_notebook_config.py
:)
Lưu ý rằng bạn có thể cần phải khởi động lại máy tính xách tay / phòng thí nghiệm jupyter để nó hoạt động.
input
các khóa trong đócell_type
bằng 'mã'. Hãy xem sơ đồ này