会用python把linux命令写一遍的人,进大厂有多容易?

Posted Python专栏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了会用python把linux命令写一遍的人,进大厂有多容易?相关的知识,希望对你有一定的参考价值。

文末 混脸熟 活动不停, 走心留言直接送书


看过这篇《 》的读者应该都对一个命令有点印象吧?没错,就是 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 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把linux命令写一遍的人,进大厂有多容易?


python ls.py -a

会用python把linux命令写一遍的人,进大厂有多容易?


python ls.py -a -r

会用python把linux命令写一遍的人,进大厂有多容易?


python ls.py -d ./temp

会用python把linux命令写一遍的人,进大厂有多容易?






[ 完 ]


今日赠送书籍

会用python把linux命令写一遍的人,进大厂有多容易?
线性代数是机器学习的基石
复制淘口令“₤1dKVYk9ztn8₤”了解更多

本书简介
《机器学习线性代数基础:Python语言描述》适合实践于数据分析、信号处理等工程领域的读者,也适合在人工智能、机器学习领域进行理论学习和实践,希望筑牢数学基础的读者,以及正在进行线性代数课程学习的读者阅读。





恭喜 小小杰吖! 读者深得我心,各赠送书籍一本。

请 小小杰吖! 同学联系小胖:moonhmily1


今日留言主题

你用python写过什么自觉有意思的工具吗?



·   合作、交流请关注微信公号Python专栏(ID:xpchuiit),转载请添 加微信moonhmily1


延伸阅读


Python











格局





喜欢就在看吧




以上是关于会用python把linux命令写一遍的人,进大厂有多容易?的主要内容,如果未能解决你的问题,请参考以下文章

会用python把linux命令写一遍的人,进大厂有多容易?

linux python 怎么输出画图

聊聊进大厂的人简历是怎么写的?以及面试需要注意的点

聊聊进大厂的人简历是怎么写的?以及面试需要注意的点

聊聊进大厂的人简历是怎么写的?以及面试需要注意的点

只会用Dubbo?难怪进不了大厂