VScode:使用tas实现python文件到Jupyter笔记本的自动转换

2024-04-20 03:59:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在VScode中,我可以编写一个带有markdown和python单元格的python文件,然后通过命令面板将其转换为笔记本。一切都很好,但我想用一个任务来自动化。在

我知道我可以定义一个转换的快捷方式,但是我仍然需要用文件资源管理器手动保存笔记本。我可以用一个任务自动完成这个任务吗?如果是,如何访问转换函数?这是VScode的内部函数还是可以通过命令行访问这个函数?在

我用命令行中的jupyter命令尝试了一些事情,但没有任何运气。似乎没有命令可以将python文件转换为Jupyter笔记本。我也找不到jupyter命令的综合文档。在

关于VScode中的Jupyter笔记本的另一个问题:有没有一种方法可以隐藏一个单元格,使其不出现?我知道如果我编辑笔记本的元数据是可能的,但我希望有更好的方法。在


Tags: 文件方法函数命令行命令面板定义笔记本
1条回答
网友
1楼 · 发布于 2024-04-20 03:59:08

如果其他人还想知道这一点,我现在使用^{}将python文件转换成jupyter笔记本。在

我编写了两个非常简单的bash脚本来自动转换和查看笔记本电脑。在

转换:

#!/usr/bin/env bash

# retrieve file names and folder from arguments
full_fname=$1
fbase_name_no_ext=$2
dir_name=$3
workspace_folder=$4

full_path_no_ext="$dir_name/$fbase_name_no_ext"

notebook_save_path=$(cd ${dir_name}/.. && pwd)

# activate venv (venv should be in vscode workspace root)
source "${workspace_folder}/my_env/bin/activate"

echo "saving to: $notebook_save_path"

# convert to jupyter notebook
jupytext  to notebook ${full_fname}

# run all cells and save output to notebook file
jupyter nbconvert  to notebook  execute "${full_path_no_ext}.ipynb"  output "${notebook_save_path}/${fbase_name_no_ext}"

# cleanup intermediate notebook (contains only cells no output)
rm "${full_path_no_ext}.ipynb

查看笔记本:

^{pr2}$

这是我的vscode任务文件:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "convert to NB",
            "type": "shell",
            "command": "${workspaceFolder}/convert",
            "args": [
                "${file}",
                "${fileBasenameNoExtension}",
                "${fileDirname}",
                "${workspaceFolder}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": true
            }
        },
        {
            "label": "view NB",
            "type": "shell",
            "command": "${workspaceFolder}/viewNB",
            "args": [
                "${fileBasenameNoExtension}",
                "${fileDirname}",
                "${workspaceFolder}"
            ]

        }
    ]

因为我不是bash专家,可能有很多事情可以用更好的方式来完成。批评总是受欢迎的!
希望这对某人有帮助。在

相关问题 更多 >