看过这篇《》的读者应该都对一个命令有点印象吧?没错,就是 linux 中经常会用到的 ls 命令。
文章中我就提到如何提升自己的 python 能力呢?直接找项目写,但是作为零基础 / 小白 / 入门 的你来说做一个博客还要学 web 框架、html、css、js,又成为了阻碍你写实际项目的阻碍。
所以我就推荐了这个命令:ls。写一个 ls 非常简单,你只需要会一点 linux 的基础知识,知道 ls 能做什么就好了。
那今天小金就给大家码了一个哪哪能用的 ls.py ,没错,windows 也可以哦~
演示环境
- 操作系统:windows10
- python版本:python 3.7
- idea:pycharm 2018.2
- 使用模块:argparse, os

了解argparse模块

argparse是python的标准库,他可以使我们很友好的编写命令行界面,并且可以自动生成帮助文档和使用消息,还能在参数无效的时候发出错误。

argparse.ArgumentParse类参数理解

1. prog:改变应用的名字,我们可以使用`%(prog)s`引用应用的名字,默认的应用名字为文件名。
2. usage: 显示这个命令用法, 一般用来显示参数的用法
3. description:显示这个命令的帮助信息
4. epilog: 显示命令的帮助信息,位置在参数的下面
argparse.ArgumentParser.add_argument函数理解
1. name | flags: 指定参数的名字
2. action:指定命令行参数,内置为以下几种
- store: 默认值,仅仅保存参数值。
- store_const: 与store基本一致,但是只保存const关键字指定的值,其它的值会报错
- store_true | store_false: 与store_const基本一致,只保存True和False
- append: 将相同参数的不同值保存在一个list中
- count: 统计参数出现的次数
- help: 输出程序的帮助信息
- version: 输出程序版本信息
3. nargs: 将不同数量的值与一个参数关联起来
- nargs=N:N为整数
- nargs='?'
- nargs='*': 将所有的参数保存在列表中
- nargs='+': 将所有的参数保存在列表中,但是至少得有一个参数
- nargs=argparse.REMAINDER: 其余的参数全部保存在一个list中
4. default: 如果没有传入这个参数,默认使用default参数的值
5. type: 接收到的参数会经过这个参数对应的函数处理。
6. choices: 将参数指定在一个范围内,超出就报错
7. required: 指定参数是否为必传参数。
8. dest: 自定义参数的名称,默认名称为 “- 后面的值” 或者 “-- 后面的值”
编写ls命令脚本
这里我们就简单的指定三个参数.
-a: 添加 -a 参数,显示隐藏文件。
-r: 添加 -r 参数,递归显示文件夹下面的文件。
-d: 指定显示目录,如果不指定,默认为当前目录。
首先我们使用 ArgumentParser 类来指定参数。
import os
import argparseparser = 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_allself.recursion = recursionself.directory = os.path.abspath(directory)def handle_dir(self, directory, grade=1, placeholder='--'):'''处理目录:param directory: 文件目录:param grade: 目录层级:param placeholder: 子目录文件前面的占位符:return:'''# 判断是否为文件夹# grade是否增加过了# os.listdir: 列出当前文件夹下面的所有文件和文件夹# 遍历目录下的文件,文件夹passdef show_file_or_dir(self, file, prefix=''):# 如果不显示隐藏文件# 打印前缀和文件名passdef 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把linux命令写一遍的人,进大厂有多容易?相关推荐

  1. python实现linux命令输出两列_Python实现Linux命令xxd -i功能

    def Xxdi(): #解析命令行选项及参数 ([base, cols, strip], [inFile, outFile]) = ParseOption() import os if os.pat ...

  2. 用Python执行Linux命令

    用Python执行Linux命令 直接上代码: import os # 导入os模块cmd1 = 'ls' # 要执行的Linux命令放入单引号中(用于情况 1) cmd2 = 'systemctl ...

  3. python执行linux命令返回结果_python执行linux命令的简单示例

    对python执行linux命令的两种方法感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: ...

  4. 在python中使用linux命令写一个监控脚本

    编写python监控脚本,监控/和/boot分区的使用率,/ 大于60%就告警,在屏幕上输出内容,具体自己定义 /boot分区大于50%就告警 脚本名monitor_partition.py 将磁盘的 ...

  5. python操作linux命令行_python调用调用Linux命令

    如何调用Linux命令 下面代码演示了调用一个shell命令, 其中,命令的输出会存储到result变量中, 而命令的返回值,则存储到exitcode中,由此可见,调用shell命令还是很方便的: i ...

  6. python 调用linux命令-Python调用Linux bash命令

    import subprocess as sup # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了 # 3.5版本之后官方推荐使用sup.run( ...

  7. Python学习——Linux命令——wget命令

    今天听说了一个特别牛逼的Linux命令,然后去搜了一下资料,对它有了简单的了解,总结了一些它的用法.wget是一个下载文件的工具,它也是用在小黑窗口中的.对于Linux用户来说简直是一大福利.因为我们 ...

  8. python执行Linux命令sudo命令

    方法一 os import subprocess import osdef cat_cpuinfo(): """ password:sudo密码 command:要执行的 ...

  9. python调用linux命令的方法

    有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 ...

最新文章

  1. pythonbyte连接_Python3之字节串bytes与字节数组bytearray的使用详解
  2. memcache---mongodb---redis比较
  3. 移动端代码规范小结(一)
  4. macos 全局快捷键 打开 iterm_在 macOS 上实用的十大软件!你get了吗?
  5. 第一章 基础设施,1.3 阿里视频云ApsaraVideo是怎样让4000万人同时狂欢的(作者:蔡华)...
  6. 只能输入正整数 以及常用的正则表达式
  7. 消息队列解耦是骗小孩儿的
  8. matlab求根的原程序,MATLAB求根程序求帮助
  9. OpenCV之颜色空间转换(笔记10)
  10. 启动两个tomcat,两个端口,两个tomcat都启动时回显示端口被占用
  11. Struts2入门到放弃
  12. 锋利的jQuery学习笔记(4)-DOM操作
  13. 空间里相片批量导入u盘_怎么批量把空间照片保存到u盘
  14. 【智能制造】服装企业数字化转型之路
  15. idea中html导入背景图片,Intellij IDEA代码框使用自定义背景图片
  16. Sql中的触发器(Triggers)
  17. 标签云打印/微信小程序蓝牙标签打印开放平台功能
  18. 适合长时间佩戴的耳机有哪些、六款适合久戴的运动耳机推荐
  19. Microsoft SQL Server 2000 Service Pack 3a
  20. XMind 8 Update 7下载安装破解

热门文章

  1. 【ACM】杭电OJ 1241(深度优先搜索小结)
  2. OPPO和微软合作,开放“召唤小冰”
  3. 腾讯提结合ACNet进行细粒度分类,效果达到最新SOTA | CVPR 2020
  4. 精选机器学习开源项目Top10
  5. 重磅 | TensorFlow 2.0即将发布,所有tf.contrib将被弃用
  6. AI看电影看哭了...MIT科学家正在教AI感受电影中的喜怒哀乐
  7. 教你如何通过分析GC日志来进行JVM调优
  8. 高并发:RocketMQ 削峰实战
  9. 这12张手绘图,让我彻底搞懂了微服务架构!
  10. 面试官问我:平常如何对你的Java程序进行调优?