原理
在linux中可以使用cd ls touch mkdir等命令快速的对目录和文件进行操作,python标准库中提供了对路径的操作模块,我们可以用它来模拟实现linux终端的部分功能
使用的模块
pathlib
截图

代码
函数都写了注释,不明白的可以留言或私聊
from pathlib import *
class myShell(object):
'''
实现关于文件有关的操作
cd ls pwd
touch
mkdir
'''
def __init__(self):
'''
初始化实例变量,cur为当前的路径
'''
self.cur = Path('.')
def main(self):
'''
用来开启主循环
'''
while True:
self.input_handle()
def input_handle(self):
'''
获得输入,并传入函数处理
'''
a = input(f'kalpe:{self.cur.resolve()} >>')
b = a.split(' ')
if a == 'ls':
self._ls()
if a == 'pwd':
self._pwd()
if b[0] == 'cd':
self._cd(b)
if b[0] == 'touch':
self._touch(b)
if b[0] == 'mkdir':
self._mkdir(b)
def _ls(self):
'''
显示当前路径下的文件和文件和文件夹
'''
for i in self.cur.iterdir():
print(i)
def _pwd(self):
'''
获得当前的路径
'''
self.cur = self.cur.cwd()
print(self.cur)
def _cd(self,arg):
'''
切换目录
'''
if len(arg) != 2:
tip = '''
你输入的格式有误,命名格式:
cd 路径
例子:
cd .
cd ..
cd /home
'''
print(tip)
return 0
#当前目录,即不用切换
if arg[1] == '.':
return 1
#上一层目录
elif arg[1] == '..':
self.cur = self.cur.parent
return 1
#指定路径,利用一个临时的a,先检查是否存在,然后替换self.cur
else:
a = Path(arg[1])
if a.exists():
self.cur = a
else:
print('你输入的文件/目录不存在')
def _touch(self,arg):
'''
创建一个文件
'''
if len(arg) < 2:
tip = '''
你的输入格式有误,命令使用:
touch filename
例子:
touch 1
touch 1 2 3
'''
print(tip)
for i in arg[1:]:
a = Path(i)
try:
a.touch(mode=0o666,exist_ok=False)
except FileExistsError:
b = input(f'文件{i}已存在,是否需要覆盖(y/n):')
if b == 'y' or b == 'Y':
a.touch(mode=0o666,exist_ok=True)
print('覆盖完成...')
def _mkdir(self,arg):
'''
创建一个目录,类似创建文件,代码也类似
'''
if len(arg) < 2:
tip = '''
你的输入格式有误,命令使用:
mkdir filename
例子:
mkdir 1
mkdir 1 2 3
'''
print(tip)
for i in arg[1:]:
a = Path(i)
try:
a.mkdir(mode=0o777,exist_ok=False)
except FileExistsError:
b = input(f'目录{i}已存在,是否需要覆盖(y/n):')
if b == 'y' or b == 'Y':
a.mkdir(mode=0o777,exist_ok=True)
print('覆盖完成...')
if __name__ == "__main__":
a = myShell()
a.main()
本文介绍了一个使用Python标准库pathlib实现的简易Linux风格命令行界面,支持cd、ls、pwd、touch和mkdir命令,用于文件和目录的基本操作。
1203

被折叠的 条评论
为什么被折叠?



