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

看过这篇《2000字谏言,给那些想学Python的人,建议收藏后细看!》的读者应该都对一个命令有点印象吧?没错,就是 linux 中常常会用到的 ls 命令。css

文章中我就提到如何提高本身的 python 能力呢?直接找项目写,可是做为零基础 / 小白 / 入门 的你来讲作一个博客还要学 web 框架、html、css、js,又成为了阻碍你写实际项目的阻碍。html

因此我就推荐了这个命令:ls。写一个 ls 很是简单,你只须要会一点 linux 的基础知识,知道 ls 能作什么就行了。python

那今天就给你们码了一个哪哪能用的 ls.py ,没错,windows 也能够哦~linux

演示环境

操做系统:windows10

python版本:python 3.7

idea:pycharm 2018.2

使用模块:argparse, os

了解argparse模块

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

argparse.ArgumentParse类参数理解

prog:改变应用的名字,咱们可使用%(prog)s引用应用的名字,默认的应用名字为文件名。

usage: 显示这个命令用法, 通常用来显示参数的用法

description:显示这个命令的帮助信息

epilog: 显示命令的帮助信息,位置在参数的下面

argparse.ArgumentParser.add_argument函数理解

name | flags: 指定参数的名字

action: 指定命令行参数,内置为如下几种windows

store: 默认值,仅仅保存参数值。

store_const: 与store基本一致,可是只保存const关键字指定的值,其它的值会报错

store_true | store_false: 与store_const基本一致,只保存True和False

append: 将相同参数的不一样值保存在一个list中

count: 统计参数出现的次数

help: 输出程序的帮助信息

version: 输出程序版本信息

nargs: 将不一样数量的值与一个参数关联起来app

nargs=N:N为整数

nargs='?'

nargs='*': 将全部的参数保存在列表中

nargs='+': 将全部的参数保存在列表中,可是至少得有一个参数

nargs=argparse.REMAINDER: 其他的参数所有保存在一个list中

default: 若是没有传入这个参数,默认使用default参数的值

type: 接收到的参数会通过这个参数对应的函数处理。

choices: 将参数指定在一个范围内,超出就报错

required: 指定参数是否为必传参数。

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 类ide

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专栏」,后台回复「机器学习电子书」免费获取100本机器学习电子书

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值