Obsdian批量插入模板
#java #python #obsdian #文件批量操作
所需工具
python或者java
搭配Obsdian插件
dataview :批量插入头模板便于dataview插件进行统计 dataview的基本使用可以参考 LillianWho的知乎回答 obsidian插件之dataview入门 - 知乎 (zhihu.com)
模板样式
---
author: fantasy
theme: java
status: no
---
用前必读
由于本人并不会python,python代码存在写入中文乱码问题未解决,使用python尽量不要在写中文 使用前最好新建一个文件夹对功能测试
使用步骤
- 在需要批量插入文件的文件夹创建一个python文件,将python代码粘贴到文件内
- 在倒数第二行有注释处编辑你的模板
font="" - 运行文件
使用效果

python代码
from datetime import datetime
import os
def recursive_listdir(path):
files = os.listdir(path)
for file in files:
file_path = os.path.join(path, file)
if os.path.isfile(file_path):
if file_path.endswith('.md'):
with open(file_path, "r+") as f_md:
old = f_md.read()
f_md.seek(0)
f_md.write(font);
f_md.write(old)
print(file_path)
elif os.path.isdir(file_path):
recursive_listdir(file_path)
path = os.curdir
now = datetime.now()
#在此处编辑要插入的文件头内容
font='---\nauthor: fantasy\ntheme: java\nstatus: no\ndate: '+now.strftime("%Y-%m-%d %H:%M:%S")+'\n---\n'
recursive_listdir(path)
Java代码版本
package com.test;
/**
* @author fantasy
* @version $ Id: W, v 0.1 2023/03/04 8:50 Administrator Exp $
*/
import java.io.File;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
public class AddMdFont {
//填写要操作的文件夹
public static final String PATH = "F://desktop//testMdd";
//添加要在文件头追加的内容
public static final String header = "--文件头--";
public static void main(String[] args) throws Exception {
File dir = new File(PATH);
List<File> fileList = new ArrayList<File>();
List<File> newfileList = getAllFile(dir, fileList);
if (newfileList == null) {
System.out.println("文件为空");
return;
}
for (File file : newfileList) {
if (file.getName().endsWith(".md")) {
appendFileHeader(header.getBytes(), file.getAbsoluteFile().toString());
}
}
}
/**
* 向src文件添加header
* @param header
* @param srcPath
* @throws Exception
*/ private static void appendFileHeader(byte[] header, String srcPath) throws Exception {
RandomAccessFile src = new RandomAccessFile(srcPath, "rw");
int srcLength = (int) src.length();
byte[] buff = new byte[srcLength];
src.read(buff, 0, srcLength);
src.seek(0);
src.write(header);
src.seek(header.length);
src.write(buff);
src.close();
}
/**
* 获取MD文件列表
*
* @param fileInput
* @param allFileList
* @return
*/
public static List<File> getAllFile(File fileInput, List<File> allFileList) {
// 获取文件列表
File[] fileList = fileInput.listFiles();
for (File file : fileList) {
if (file.isDirectory()) {
// 递归处理文件夹
// 如果不想统计子文件夹则可以将下一行注释掉
getAllFile(file, allFileList);
} else {
// 如果是MD文件则将其加入到文件数组中
if (file.getName().endsWith(".md")) {
allFileList.add(file);
}
}
}
return allFileList;
}
}