其他
会用 Python 把 Linux 命令写一遍的人,进 “大厂” 到底有多容易?
以下文章来源于Python专栏 ,作者上海小胖
点击上方 "码农真经" 关注公众号,星标或者置顶
00点准时推送,第一时间送达
上一篇:铁打的Python连续3年第一,PHP跌出前十:IEEE Spectrum 2019编程语言排行榜出炉
- 操作系统:windows10- python版本:python 3.7- idea:pycharm 2018.2- 使用模块:argparse, os
了解argparse模块
argparse.ArgumentParse类参数理解
import os
import argparse
parser = argparse.ArgumentParser(prog='ls', description='显示文件夹下的文件')
# 指定参数
parser.add_argument('-a', '--all', const=True, nargs='?', help='是否显示隐藏文件')
parser.add_argument('-d', '--directory', help='指定显示的目录,如果不指定,默认为当前目录')
parser.add_argument('-r', '--recursion', const=True, nargs='?', help='是否递归显示')
# 解析参数
args = parser.parse_args()
# 拿到directory参数,如果没有传这个参数,为None
directory = args.directory
# 如果directory有值
if directory:
# 如果指定目录不存在,抛出异常
if not os.path.exists(directory):
raise ValueError(f'{directory} does`t exist')
# 如果directory不是一个目录,抛出异常
if not os.path.isdir(directory):
raise ValueError(f'{directory} is not a directory')
# 如果directory为None,给directory赋值
else:
directory = '.'
我们规定好参数之后,接下来就是具体ls的实现。我们封装一个 LsCommand 类
class LsCommand():
def __init__(self, show_all=False, directory='.', recursion=False):
'''
:param show_all: 是否显示隐藏文件
:param directory: 指定的文件目录
:param recursion: 是否递归显示目录下的文件
'''
self.show_all = show_all
self.recursion = recursion
self.directory = os.path.abspath(directory)
def handle_dir(self, directory, grade=1, placeholder='--'):
'''
处理目录
:param directory: 文件目录
:param grade: 目录层级
:param placeholder: 子目录文件前面的占位符
:return:
'''
# 判断是否为文件夹
# grade是否增加过了
# os.listdir: 列出当前文件夹下面的所有文件和文件夹
# 遍历目录下的文件,文件夹
pass
def show_file_or_dir(self, file, prefix=''):
# 如果不显示隐藏文件
# 打印前缀和文件名
pass
def run(self):
'''
运行ls命令
:return:
'''
# os.listdir(dir) 得到dir目录下所有文件,文件夹
# 遍历self.directory目录先所有文件,文件夹
pass
ls这个类我们也封装好了,接下来我们将得到的参数传入 LsCommand 类中,然后运行,就可以愉快的得出结果。
ls = LsCommand(bool(args.all), directory, bool(args.recursion))
ls.run()
效果展示:python ls.py
python ls.py -a
python ls.py -a -r
python ls.py -d ./temp
来自公众号Python专栏 | 编辑 真经君
--END--
往日热文:
Python 2大限来了!113天后自生自灭,官方不再维护更新 | 附升级指南
求求大家别在朋友圈发“给我一面国旗@微信官方”,正确姿势是这样的...
喜欢本文的朋友们,欢迎长按下图关注订阅号码农真经
收看更多精彩内
你在看吗?一起成长