我们在写一些教程的时候,经常会需要创建一些用于演示的文档,这些文档往往需要填充一些不特定的内容。那么如何快速的创建演示用的文档呢?
docfaker.py
docfaker.py
是一个py
脚本,用于创建一个简单的txt
文档,docfaker.py
脚本内容如下👇:
# -*- coding:UTF-8 -*-
"""
@author: dyy
@contact: douyaoyuan@126.com
@time: 2023/12/19 9:41
@file: docfaker.py
@desc: xxxxxx
"""# region 引入必要的依赖
import os模块名 = 'DebugInfo'
try:from DebugInfo.DebugInfo import *
except ImportError as impErr:print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")print(f"尝试安装 {模块名} 模块:")try:os.system(f"pip install {模块名}")except OSError as osErr:print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")exit(0)else:try:from DebugInfo.DebugInfo import *except ImportError as impErr:print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")exit(0)模块名 = 'pathvalidate '
try:from pathvalidate import is_valid_filename
except ImportError as impErr:print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")print(f"尝试安装 {模块名} 模块:")try:os.system(f"pip install {模块名}")except OSError as osErr:print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")exit(0)else:try:from pathvalidate import is_valid_filenameexcept ImportError as impErr:print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")exit(0)try:# 导入 faker 模块from faker import Faker
except ImportError as impErr:print("尝试导入 faker 依赖时检测到异常:", impErr)try:os.system("pip install faker")print("尝试导入 faker 成功")except OSError as osErr:print("尝试安装模块 faker 时检测到异常:", osErr)exit(0)else:try:# 如果模块安装成功,则再次尝试导入依赖from faker import Fakerexcept Exception as expErr:print("再次尝试导入 faker 依赖时检测到异常:", expErr)exit(0)# endregion伪装1 = Faker(['zh_CN', 'en_US'])def 文档名合法性检查(文档名:str)->bool:文档名 = str(文档名 if 文档名 else '')if not 文档名:return Falsereturn is_valid_filename(文档名)if '__main__' == __name__:画板: 打印模板 = 打印模板(False)画板.执行位置(__file__)本地搜索:本地搜索接口类 = 本地搜索接口类()交互接口: 交互接口类 = 交互接口类()交互接口.输入提示修饰方法 = 蓝字文档名: str = ''while True:文档名 = 交互接口.发起文本交互(输入提示='请输入文档名(0: 退出): ',限定范围=文档名合法性检查,画板=画板.副本)if '0' == 文档名:画板.调试消息('用户要求退出程序')exit(0)if '.' not in 文档名: # 如果文档名中没有后缀,则默认为txt 文档文档名 += '.txt'if 本地搜索.存在文档(文档=文档名, 画板=画板.副本): # 文档已经存在,则提示是否覆盖用户确认: str = 交互接口.发起文本交互(输入提示=f'文档 {绿字(文档名)} 已经存在,是否覆盖?({绿字("y: 覆盖")};{红字("n: 不覆盖")}):',限定范围='yYnN',画板=画板.副本)if '0' == 用户确认:画板.调试消息('用户要求退出程序')exit(0)if 用户确认 in ['y', 'Y']:breakelse: # 文档不存在break画板.调试消息(f'文档名是: {文档名}')内容行数 = 交互接口.发起文本交互(输入提示='请输入文档内容的行数: ', 允许空值=True, 限定范围=str.isdigit,画板=画板.副本)if not 内容行数:内容行数 = 伪装1.pyint(0,50)else:内容行数 = int(内容行数)空行机率: float = 0.25行列表: list[str] = []if 内容行数 > 0:for 行号 in range(内容行数):色子 = 伪装1.pyfloat(left_digits=0, right_digits=2, positive=True)if 色子 <= 空行机率: # 这是行是空行行列表.append('')else:字数 = 伪装1.pyint(7, 20)行列表.append(f'第 {行号 + 1} 行: ' + str(伪装1.text(max_nb_chars=字数)).replace('\n', '↩'))if 行列表:画板.调试消息('\n'.join(行列表))else:画板.调试消息('文档内容为空')# 创建空文档os.system(f'echo "" | cat > {文档名}')if 行列表: # 将行列表中的内容写入到文档名的文档中for 行号 in range(0, len(行列表), 500): # 每 500 行写入一次, 避免 buff 过大内容: str = '\n'.join(行列表[行号:行号+500])if 0 == 行号:os.system(f'echo "{内容}" | cat > {文档名}')else:os.system(f'echo "{内容}" | cat >> {文档名}')
如上👆,脚本内容很简单,主要是与用户交互,获取一些必要的用户输入信息后,生成一个txt
文档,然后使用Faker
包生成一些填充内容。
使用演示
我们在Ubuntu
系统中定义docfaker.py
的调用指令为fakdoc
,这样我们通过fakdoc
指令就可以运行docfaker.py
脚本了,如下👇:
脚本提示我们输入文档名称,我们输入fileName
并回车。
👇如下,系统提示我们需要输入文档填充内容的行数,我们输入一个大于0
的值即可:
我们输入13
并回车。
👇如下,脚本根据我们输入的文档名和内容填充行数,生成一个txt
文档,并填充了随机的内容,这中间还会随机填充空行。
小结
这就是今天分享的如何在Ubuntu
中生成一个随机文档的方法了。