首页 > 编程语言 >基于 Python 3.12.4 和 PySide 6 的 假用户操作系统【0-0】虚拟终端框架

基于 Python 3.12.4 和 PySide 6 的 假用户操作系统【0-0】虚拟终端框架

时间:2024-08-22 22:23:47浏览次数:9  
标签:PySide Python 3.12 CommandVersion print exit import args0 command

基本目标

  • 实现工作目录的切换;
  • 实现非退出命令下的无限循环;

到目前为止还不能实现的功能

  • 动态导入 py 文件中的模块
  • 缺少组件

定义虚拟进程类

command.py

from ctypes import windll
from PySide6.QtWidgets import QWidget
from sys import exit as sys_exit
from os import path, chdir
from warnings import filterwarnings
from command_version import CommandVersion


class Command:
    def __init__(self, UI: QWidget = None):
        windll.kernel32.SetConsoleTitleW("FalseOS Command")
        filterwarnings("ignore", category=SyntaxWarning)

    def run(self, command: str):
        if command == "":
            return
        command += " "
        conlist = command.split(" ")
        if "exit" == conlist[0].strip():
            self.exit()
        elif "#" in conlist[0].strip():
            print(f"'{conlist[0].strip()}' 不是可导入的模块。")
            return
        try:
            exec(f"self.{conlist[0].strip()}(conlist[1:])")
        except:
            print(f"'{conlist[0].strip()}' 不是可导入的模块。")

    def path(self) -> str:
        return path.abspath(".")

    @staticmethod
    def exit():
        sys_exit(0)

    @staticmethod
    def about(args):
        print(f"应用程序名称:{CommandVersion.name}\n"
              f"应用程序版本:{CommandVersion.version}\n"
              f"应用程序内部版本:{CommandVersion.build_ver}\n"
              f"应用程序证书发行机构:{CommandVersion.creater}")

    def cwd(self, args: list[str]):
        args0 = args[0]
        try:
            try:
                args0 = args[0].replace("*", " ")
            except:
                args0 = args[0]
            try:
                args0 = args0.replace("/", "\\")
            except:
                pass
            chdir(args0)
        except:
            if not self.is_non_str(args0):
                print(f"指定的路径无效:\n\tcwd {self.addlist(args)}\n\t    {"^" * len(args0)}")
            else:
                print(f"指定的路径无效:路径为空")
            return

    @staticmethod
    def is_non_str(string: str) -> bool:
        for i in string:
            if i != " " and i != " " and i != "":
                return False
        return True

    @staticmethod
    def addlist(list0: list[str]):
        re0 = ""
        for i in list0:
            re0 += i
            re0 +=" "
        return re0

定义应用程序信息

command_version.py

class CommandVersion:
    name = "FalseOS Command"
    version = "0.0.1"
    build_ver = "240.00001"
    creater = "YX 6223"

定义在 真 操作系统下的终端测试文件

command_loop.py

from command import Command
from command_version import CommandVersion
print(f"{CommandVersion.name} {CommandVersion.version} (内部构建版本:{CommandVersion.build_ver})\n"
      f"Created By {CommandVersion.creater},保留所有权利。")
cmd = Command()
while True:
    try:
        a = input(f"FC {cmd.path()} >>> ")
        cmd.run(a)
    except KeyboardInterrupt:
        print("\n终端进程被终止。")
        exit(-1)
    except SystemExit:
        exit(0)
    except OSError:
        print("\n系统错误。")
        exit(-1)

标签:PySide,Python,3.12,CommandVersion,print,exit,import,args0,command
From: https://blog.csdn.net/2402_84665876/article/details/141439394

相关文章

  • python怎么用正则表达式筛选网页内容
    一、正则表达式简述:什么是正则表达式?正则表达式就是可以匹配文本片段的模式,最简单的正则表达式就是一个字符串,用于在文本中匹配到此字符串自身。二、常用正则表达式:设计正则表达式的时候有几个注意点如下:a.特殊符号需要加转移符:如要匹配'china.com',则正则表达式格式应为'......
  • python中%s是什么
    python的%s是用作print的格式化输出:打印字符串。Python中内置的%操作符可用于格式化字符串操作,控制字符串的呈现格式,s代表字符串。格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型。python中不同类型的字符拥有不同的格式符,分别为......
  • python 05-标准库:csv、json、sqlite3、datetime模块
    csv模块importcsv#data.csv不存在时,会现在当前目录下创建一个data.csv文件withopen("data.csv","w",encoding='utf-8')asfile:writer=csv.writer(file)writer.writerow(["trasanction_id","product_id","pric......
  • Selenium + Python 自动化测试22(PO+数据驱动)
            我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。上一篇我们讨论了PO模式和unittest框架结合起来使用。        本篇文章我们综合一下之前学习的内容,如先将PO模式、数据驱动思想和我们生成HTML报告融合起来,综合的灵活的使用......
  • 第四章 Python操作redis(操作案例)
    一、python对redis基本操作(1)连接redis#方式1importredisr=redis.Redis(host='127.0.0.1',port=6379)r.set('foo','Bar')print(r.get('foo'))#方式2importredispool=redis.ConnectionPool(host='127.0.0.1',po......
  • Python 基础:编程概念
    在黑客和网络安全领域,这通常意味着BASH和Python脚本。Python脚本在网络安全专业人士中最受欢迎,因为它拥有丰富的库和模块,可用于网络安全(你可以使用任何编程语言进行网络安全,但如果有人已经用Python等语言编写了轮子,那么你的生活就会轻松得多)。如果你检查Kali中的工具,你会......
  • python——concurrent.futures
    concurrent.futures是Python标准库中用于并行编程的高级模块,它提供了一种高级别的接口来管理线程和进程。通过这个模块,你可以轻松地利用多线程和多进程来并行执行任务,进而提高程序的执行效率。1.concurrent.futures概述concurrent.futures提供了两种执行器类型:Thre......
  • 【精选】基于Python的热门旅游景点数据分析系统的设计与实现(南京旅游,北京旅游,旅游网站
    目录: 系统简介:  关键技术介绍2.1PYTHON语言简介2.2MySql数据库2.3DJANGO框架2.4Hadoop介绍2.5Scrapy介绍2.6B/S架构 系统总功能结构设计系统详细实现:6系统测试系统测试的目的软件测试过程测试用例为什么选择我: 博主介绍:  ✌我是阿龙,一名......
  • Python系列(7)| 命名空间、作用域
     1.命名空间(Namespace)   Python中的命名空间(Namespace)和作用域是密切相关的概念。Python命名空间(Namespace)可以视为一个字典,其中键是变量名,值是与之关联的对象。   各个命名空间是独立的,同一个命名空间中不能有重名(重名的以后一个为准),不同的命名空间是......
  • PCA原理与水果成熟状态数据分析实例:Python中PCA-LDA 与卷积神经网络CNN
    全文链接:https://tecdat.cn/?p=37450 主成分分析(PCA)作为数据科学中用于可视化和降维的重要工具,在处理具有大量特征的数据集时非常有用。就像我们难以找到时间阅读一本1000页的书,而更倾向于2到3页的总结以抓住整体概貌一样,当数据集中特征过多时,PCA可以帮助我们减少维度,提......