我们在写一些教程的时候,经常会需要创建一些用于演示的文档,这些文档往往需要填充一些不特定的内容。那么如何快速的创建演示用的文档呢?
docfaker.py
是一个py
脚本,用于创建一个简单的txt
文档,docfaker.py
脚本内容如下:
# -*- coding:UTF-8 -*-
"""
@author: dyy
@contact: [email protected]
@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_filename
except 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 Faker
except Exception as expErr:
print("再次尝试导入 faker 依赖时检测到异常:", expErr)
exit(0)
# endregion
伪装1 = Faker(['zh_CN', 'en_US'])
def 文档名合法性检查(文档名:str)->bool:
文档名 = str(文档名 if 文档名 else '')
if not 文档名:
return False
return 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']:
break
else: # 文档不存在
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
中生成一个随机文档的方法了。