linux 如何创建文件

我们在写一些教程的时候,经常会需要创建一些用于演示的文档,这些文档往往需要填充一些不特定的内容。那么如何快速的创建演示用的文档呢?

docfaker.py

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脚本了,如下:
linux 如何创建文件_第1张图片
脚本提示我们输入文档名称,我们输入fileName并回车。

如下,系统提示我们需要输入文档填充内容的行数,我们输入一个大于0的值即可:
linux 如何创建文件_第2张图片
我们输入13并回车。

如下,脚本根据我们输入的文档名和内容填充行数,生成一个txt文档,并填充了随机的内容,这中间还会随机填充空行。
linux 如何创建文件_第3张图片

小结

这就是今天分享的如何在Ubuntu中生成一个随机文档的方法了。

你可能感兴趣的:(linux)