本文目录导读:

我来帮你创建一个将文档转换为书籍格式的脚本,这里提供几个常用格式的转换方案:
Markdown 转 Epub 电子书
#!/usr/bin/env python3
"""
文档转书籍格式脚本 - Markdown to Epub
需要安装: pip install markdown ebooklib
"""
import os
import re
from pathlib import Path
import markdown
from ebooklib import epub
def create_book_from_markdown(md_file, output_path=None):
"""
将Markdown文件转换为Epub电子书
"""
# 读取Markdown文件
with open(md_file, 'r', encoding='utf-8') as f:
md_content = f.read()
# 解析标题作为章节
chapters = re.split(r'\n## ', md_content)
# 创建书籍
book = epub.EpubBook()
# 设置元数据
book.set_identifier('id_' + str(hash(md_file)))
book.set_title(os.path.basename(md_file).replace('.md', ''))
book.set_language('zh-CN')
book.add_author('自动生成')
# 转换每个章节
chapters_epub = []
for i, chapter in enumerate(chapters):
if i == 0:
# 第一个章节作为前言
html_content = markdown.markdown(chapter)
chapter_item = epub.EpubHtml(
title='前言',
file_name='chap_00.xhtml',
lang='zh-CN'
)
chapter_item.content = f'<html><body>{html_content}</body></html>'
else:
# 其他章节
title = chapter.split('\n')[0]
content = '\n'.join(chapter.split('\n')[1:])
html_content = markdown.markdown(content)
chapter_item = epub.EpubHtml(
title=title,
file_name=f'chap_{i:02d}.xhtml',
lang='zh-CN'
)
chapter_item.content = f'<html><body><h1>{title}</h1>{html_content}</body></html>'
book.add_item(chapter_item)
chapters_epub.append(chapter_item)
# 设置目录
book.toc = chapters_epub
# 添加导航
book.add_item(epub.EpubNcx())
book.add_item(epub.EpubNav())
# 设置封面
book.spine = ['nav'] + chapters_epub
# 输出文件
if output_path is None:
output_path = os.path.splitext(md_file)[0] + '.epub'
epub.write_epub(output_path, book, {})
print(f"书籍已生成: {output_path}")
return output_path
if __name__ == "__main__":
import sys
if len(sys.argv) < 2:
print("用法: python script.py <markdown文件> [输出路径]")
sys.exit(1)
md_file = sys.argv[1]
output_path = sys.argv[2] if len(sys.argv) > 2 else None
if os.path.exists(md_file):
create_book_from_markdown(md_file, output_path)
else:
print(f"文件不存在: {md_file}")
文本文件转简易书籍格式
#!/usr/bin/env python3
"""
文本文件转书籍格式 - 添加页码、目录等
"""
import os
import textwrap
class TextBook:
"""简单的文本书籍格式化工具"""
def __init__(self, page_width=70, page_height=40):
self.page_width = page_width
self.page_height = page_height
self.pages = []
def format_text(self, text_content):
"""格式化文本为书籍页面"""
lines = text_content.split('\n')
page_content = []
page_num = 1
for line in lines:
# 处理长行
if len(line) > self.page_width:
wrapped = textwrap.fill(line, width=self.page_width)
wrapped_lines = wrapped.split('\n')
page_content.extend(wrapped_lines)
else:
page_content.append(line)
# 分页
if len(page_content) >= self.page_height:
self.pages.append({
'number': page_num,
'content': page_content[:self.page_height]
})
page_content = page_content[self.page_height:]
page_num += 1
# 处理剩余内容
if page_content:
self.pages.append({
'number': page_num,
'content': page_content
})
def save_book(self, output_path):
"""保存为书籍格式"""
with open(output_path, 'w', encoding='utf-8') as f:
# 写入标题
f.write(f"{'=' * 60}\n")
f.write(f"{'文本书籍'.center(58)}\n")
f.write(f"{'=' * 60}\n\n")
# 写入目录
f.write("目 录\n")
f.write("-" * 60 + "\n")
f.write(f"共 {len(self.pages)} 页\n\n")
# 写入每页内容
for page in self.pages:
f.write(f"\n{'=' * 60}\n")
f.write(f"第 {page['number']} 页".center(58) + "\n")
f.write(f"{'=' * 60}\n\n")
for line in page['content']:
f.write(line + '\n')
f.write(f"\n{'=' * 60}\n")
f.write(f"— {page['number']} —".center(58) + "\n")
print(f"书籍已生成: {output_path}")
def convert_to_book(input_file, output_file=None):
"""转换文本文件为书籍格式"""
if not os.path.exists(input_file):
print(f"错误: 文件 {input_file} 不存在")
return False
# 读取输入文件
with open(input_file, 'r', encoding='utf-8') as f:
content = f.read()
# 创建书籍
book = TextBook()
book.format_text(content)
# 确定输出文件名
if output_file is None:
base_name = os.path.splitext(input_file)[0]
output_file = f"{base_name}_书籍版.txt"
# 保存
book.save_book(output_file)
return True
if __name__ == "__main__":
import sys
if len(sys.argv) < 2:
print("用法:")
print(f" python {sys.argv[0]} <输入文件> [输出文件]")
print("示例:")
print(f" python {sys.argv[0]} 我的文档.txt")
print(f" python {sys.argv[0]} 文档.txt 书籍版.txt")
sys.exit(1)
input_file = sys.argv[1]
output_file = sys.argv[2] if len(sys.argv) > 2 else None
if convert_to_book(input_file, output_file):
print("转换完成!")
else:
print("转换失败!")
批量转换工具
#!/bin/bash
# 批量文档转书籍格式脚本
echo "=== 文档转书籍格式工具 ==="
echo ""
# 检查参数
if [ $# -lt 1 ]; then
echo "用法: $0 <文件或目录>"
echo "支持格式: .txt .md .html"
exit 1
fi
TARGET="$1"
# 转换函数
convert_file() {
local file="$1"
local ext="${file##*.}"
local base="${file%.*}"
echo "正在转换: $file"
case "${ext,,}" in
txt)
# 文本文件 - 添加页码和格式
awk '
BEGIN {
page = 1
line_count = 0
}
{
if (line_count >= 40) {
printf "\n\n--- 第 %d 页 ---\n\n", page
page++
line_count = 0
}
print
line_count++
}
END {
printf "\n\n--- 第 %d 页 ---\n", page
printf "\n总页数: %d\n", page
}
' "$file" > "${base}_书籍版.txt"
echo " -> ${base}_书籍版.txt"
;;
md)
# Markdown文件 - 转换为更好的格式
sed 's/^# /# 第1章 /' "$file" > "${base}_书籍版.md"
echo " -> ${base}_书籍版.md"
;;
html)
# HTML文件 - 简化格式
html2text "$file" > "${base}_书籍版.txt" 2>/dev/null || \
echo " [警告] 需要安装 html2text"
;;
*)
echo " [跳过] 不支持的文件格式: $ext"
;;
esac
}
# 处理文件或目录
if [ -f "$TARGET" ]; then
convert_file "$TARGET"
elif [ -d "$TARGET" ]; then
echo "处理目录: $TARGET"
find "$TARGET" -type f \( -name "*.txt" -o -name "*.md" -o -name "*.html" \) | while read file; do
convert_file "$file"
done
else
echo "错误: 文件或目录不存在"
exit 1
fi
echo ""
echo "转换完成!"
使用说明
安装依赖(方案一需要)
pip install markdown ebooklib
使用方法
-
Markdown转Epub:
python script.py 文档.md 输出.epub
-
文本转书籍格式:
python script.py 文档.txt 书籍版.txt
-
批量转换:
chmod +x convert_book.sh ./convert_book.sh 文档目录/
这些脚本会为文档添加页码、目录、页眉页脚等书籍元素,使普通文档更接近书籍的阅读体验。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播