最近对MS-DOS系统比较感兴趣,想自己做一个,于是我用Python做了一个MS-DOS系统。(很简单,没有任何复杂代码)

1.工具
代码编辑器:Visual Studio Code,这是官网链接。

2.正式开始
2.1.准备
2.1.1.在桌面新建一个文件夹,命名为MS-DOS。当然名字可以自己定。
2.1.2.打开VSCode,选择Open Folder,打开MS-DOS文件夹。
2.1.3.把鼠标放到文件夹上,点击新建文件按钮,新建main.py。

2.2.编写main.py
2.2.1.首先,我们导入好需要的库。

import pandas as pd  # 输入DIR命令时读取csv文件
import os   # 判断文件和目录是否存在
import sys  # 退出程序时使用
import functions as func    # 这是导入自己写的函数文件,后面会提到

2.2.2.因为我们要将它做得很高大上,所以我放了欢迎界面。代码如下:

welcome = '''Disk formatted with WinImage 4.00 (c) 1993-97 Gilles Vollant
Bootsector from C.H HochstatterNo Systemdisk. Booting from harddisk.
Starting MS-DOS 7.1...Welcome to MS-DOS 7.10...
Copyright Microsoft Corp. All rights reserved.Killer v1.0 Copyright 1995 Vincent Penquerc'h. All rights reserved.
Killer installed in memory.
DOSKEY installed.
DOSLFN 0.32o: loaded consuming 11840 bytes.
SHARE v7.10 (Revision 4.11.1492)
Copyright (c) 1989-2003 Datalight, Inc.installed.CuteMouse v1.9.1 [DOS]
Installed at PS/2 portNow you are in MS-DOS 7.10 prompt. Type 'help' for help.'''
# 字符串太长,所以要用三个单引号
print(welcome)
# 显示欢迎内容
content = input('C:\>')
# 显示命令提示符

2.2.3.实现ECHO命令
ECHO命令会将文本打印在终端,很好实现,可以直接用print()语句

if 'ECHO' in content and content.index('E') == 0:  # 判断是否为ECHO命令,且字符E在最开头content.upper()    #转换为大写answer = content.replace('ECHO ', '')    # 获取ECHO所要显示的内容func.write_log(content, answer)  # 写入日志文件print(answer)   #打印出内容
else:print('Bad command or file name')    # 输入错误时显示

replace()函数可以将字符串中的字符替换掉。第一个参数是要替换的字符串,第二个参数是替换成的字符串。这里就是将“ECHO ”以外的字符保留(或者说把“ECHO ”去掉),就得到了想要打印的文本了。
这里我写了一个写入日志文件的函数。我们先创建一个日志文件,名叫history.log,我们要将内容写入日志文件。在这里,我们新建一个文件,命名为functions.py,用来写函数。
写入日志文件:

import timedef write_log(input_string, output_string):with open(r'C:\Users\Eric\Desktop\Python\Operating_System\MS-DOS\Storage\history.log', 'a') as f:  # 这里填自己的路径,右键单击,history.log,选择Copy path,再粘贴到这里。前面一定加r。第二个参数是模式设置,a是追加模式。time_now = time.strftime('%Y-%m-%d %H:%M:%S') # 获取时间(年-月-日 时-分-秒)。这里变量名千万不能为time,要不然会识别错误。f.write(f'{time_now}|input:{input_string}|output:{output_string}\n') # f是format的意思,大括号里填变量名称。\n是换行功能。

2.2.4.实现EXIT命令
我们在退出时使用的函数可以直接用sys.exit(0)实现。

while True:if 'ECHO' in content and content.index('E') == 0:   # 判断是否为ECHO命令,且字符E在最开头content.upper()    #转换为大写answer = content.replace('ECHO ', '')    # 获取ECHO所要显示的内容func.write_log(content, answer)  # 写入日志文件print(answer)   #打印出内容elif 'EXIT' in content and content.index('E') == 0:content.upper()func.write_log(content, 'exit|0')print('\n')else:print('Bad command or file name')  # 输入错误时显示

修改一下代码。加上while True:就可以一直判断。
2.2.5.完整代码:

# file:main.py
import pandas as pd
import os
import sys
import functions as funcwelcome = '''Disk formatted with WinImage 4.00 (c) 1993-97 Gilles Vollant
Bootsector from C.H HochstatterNo Systemdisk. Booting from harddisk.
Starting MS-DOS 7.1...Welcome to MS-DOS 7.10...
Copyright Microsoft Corp. All rights reserved.Killer v1.0 Copyright 1995 Vincent Penquerc'h. All rights reserved.
Killer installed in memory.
DOSKEY installed.
DOSLFN 0.32o: loaded consuming 11840 bytes.
SHARE v7.10 (Revision 4.11.1492)
Copyright (c) 1989-2003 Datalight, Inc.installed.CuteMouse v1.9.1 [DOS]
Installed at PS/2 portNow you are in MS-DOS 7.10 prompt. Type 'help' for help.'''
print(welcome)
while True:content = input('C:\>')if 'ECHO' in content and content.index('E') == 0: # 判断是否为ECHO命令,且字符E在最开头content.upper()    #转换为大写answer = content.replace('ECHO ', '')    # 获取ECHO所要显示的内容func.write_log(content, answer)  # 写入日志文件print(answer)   #打印出内容elif 'EXIT' in content and content.index('E') == 0:content.upper()func.write_log(content, 'exit|0')print('\n')else:print('Bad command or file name')  # 输入错误时显示
import timedef write_log(input_string, output_string):with open(r'C:\Users\Eric\Desktop\Python\Operating_System\MS-DOS\Storage\history.log', 'a') as f:time_now = time.strftime('%Y-%m-%d %H:%M:%S')f.write(f'{time_now}|input:{input_string}|output:{output_string}\n')

2.2.6.今天就写这么多了,下期再见!

Python写一个MS-DOS系统 - 第一天 欢迎及ECHO和EXIT命令实现相关推荐

  1. python写一个系统-使用Python写一个量化股票提醒系统

    大家在没有阅读本文之前先看下python的基本概念, Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开 ...

  2. python写一个系统-熬了一晚上,小白用Python写了一个股票提醒系统

    码农小马七夕节去相亲了,见了一个不错的姑娘,长的非常甜美!聊着聊着很投缘!通过介绍人了解到,对方也很满意--想着自己单身多年的生活就要结束啦,心里满是欢喜,美美哒!但是突然想起年初还有几万块在股市里面 ...

  3. 用python读取股票价格_使用Python写一个量化股票提醒系统

    大家在没有阅读本文之前先看下python的基本概念, Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开 ...

  4. python量化股票源码_使用Python写一个量化股票提醒系统

    大家在没有阅读本文之前先看下python的基本概念, Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开 ...

  5. python写炒股软件_使用Python写一个量化股票提醒系统

    大家在没有阅读本文之前先看下python的基本概念, Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开 ...

  6. 利用python写一个简单的双色球彩票系统

    利用python写一个简单的双色球彩票系统 1.设置每次买的号码一样 写一个双色球彩票系统,系统可以随机产生一组数据,一组彩票数据有六位数,这六位数的的取值范围是0和1. 一张彩票是两块钱,用户可以选 ...

  7. 用python写一个windows下的定时关机脚本

    由于本人经常使用笔记本共享WiFi,但是又不想笔记本开机一夜(为了低碳环保嘛 ~_~!),所以每次都要用使用DOS命令关机,感觉好麻烦.正好最近在学习python,于是决定用python写一个定时关机 ...

  8. python软件界面-用Python写一个语音播放软件

    原标题:用Python写一个语音播放软件 单位经常使用广播进行临时事项的通知(将文字转换为语音然后通过功放广播),但是市面上多数语音播放软件都是收费的,要么发音失真,要么不够稳定--经常出现莫名其妙的 ...

  9. 贪吃蛇博弈算法python_算法应用实践:如何用Python写一个贪吃蛇AI

    原标题:算法应用实践:如何用Python写一个贪吃蛇AI 前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势 ...

最新文章

  1. php phppowerpoint 生成表格_php之EXCEL导出代码生成器的实现思路
  2. C#中调用python方法
  3. 到底IPv4有多少个地址
  4. 2013.10u-boot移植之增加nand保存环境变量
  5. python3学习笔记10(迭代器和生成器)
  6. 老大爷的手法一看就不一般!
  7. icem密度盒怎么设置_怎么做好火灾自动报警系统施工安装?
  8. win7域内桌面黑屏
  9. larvel php restful_laravel 实现一个简单的 RESTful API
  10. php网页正文提取,通用网页正文抓取工具_任意网页正文提取API
  11. 讨论简书留言界面的设计
  12. [LeetCode]168. Excel Sheet Column Title
  13. bui框架与php结合,bui框架前端自定义配色基础属性
  14. Snipaste2.7.3下载安装与使用(超实用的截图利器)
  15. C盘爆红,一个操作将微信缓存踢走
  16. Connection terminated as request was larger than 10485760.
  17. 文本域中只允许输入特定长度的字符
  18. 不到两年的前端小白2017个人年终总结:今年的年终总结是为了更好的自己
  19. pandas parquet文件读取pyarrow、feather文件保存与读取;requests 或wget下载图片文件
  20. google真的很简单的

热门文章

  1. tensorflow中滑动平均模型的说明
  2. 渲染大面积草地时,如何降低消耗?
  3. 论文阅读:《Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks》
  4. 联想台式电脑前置音频线及USB接法
  5. iOS 添加自定义文字字体样式
  6. 树莓派如何跟踪附近的飞机,安装和配置Flightradar24
  7. chrome夜间模式
  8. 【一起学UniGUI】--UniGUI的控件(Components)(9)
  9. matlab pid 课设 参考文献,系统控制论文,关于Matlab在计算机控制技术课程“PID控制器参数整定”中的应用相关参考文献资料-免费论文范文...
  10. 用这个方法,苹果官网居然比二手市场还便宜,最近剁手的注意了