# 使用python的shlex模块解析命令行参数
## 介绍
命令行参数是开发和使用Python程序时经常会遇到的一种情况。这些参数可以用来控制程序的行为,传递输入数据,或者提供一些配置信息。Python的标准库中的shlex模块提供了解析命令行参数的功能,使得处理命令行参数变得更加简单和灵活。
## shlex模块简介
shlex模块是Python标准库中的一个模块,用于解析Unix风            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-09-04 10:13:37
                            
                                105阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            shlex模块实现了一个类来解析简单的类shell语法,可以用来编写领域特定的语言,或者解析加引号的字符串。
处理输入文本时有一个常见的问题,往往要把一个加引号的单词序列标识为一个实体。根据引号划分文本可能与预想的并不一样,特别是嵌套有多层引号时。例:
有文本quotes.txt,内容如下
This string has embedded "double quotes"            
                
                    
                        
                                                            
                                                                        
                                                                                        翻译
                                                                                            精选
                                                        
                            2013-03-19 00:46:28
                            
                                10000+阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            shlex 模块最常用的是 split() 函数,用来分割字符串,通常与 subprocess 结合使用            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2019-01-22 12:22:00
                            
                                146阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在本文中,我将深入探讨 Python 的 `shlex` 模块,它是用于简单词法分析的工具,通常用于解析 shell 命令行的字符串。我们将通过一个结构化的过程来解决与 `shlex` 模块相关的问题,包括环境准备、集成步骤、配置详解、实战应用、性能优化以及生态扩展。
## 环境准备
在开始之前,我们需要确保我们的开发环境支持 `shlex` 模块。下面是一个技术栈兼容性表格,展示了不同版本的            
                
         
            
            
            
            ## 使用 Python shlex 执行 Awk 的流程
为了帮助你理解如何使用 Python 的 shlex 模块执行 Awk 命令,我将为你详细介绍整个流程。以下是整个流程的步骤表格:
```mermaid
flowchart TD
    A[输入 Awk 命令] --> B[使用 shlex 模块解析命令]
    B --> C[获取解析结果]
    C --> D[使用 sub            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-12-18 09:20:21
                            
                                32阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Python中的shlex()
在Python中,shlex是一个用于解析UNIX shell样式的命令行参数的模块。它提供了一个函数shlex(),可以将一个字符串解析成一个词法单元列表。shlex()函数可以将字符串按照空格分割成不同的词法单元,同时还支持引号和转义字符的处理。本文将介绍shlex模块的用法,并通过示例代码来说明其功能。
## 安装shlex模块
shlex模块是Py            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-08-01 12:25:54
                            
                                547阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            import作用:导入/引入一个python标准模块,其中包括.py文件、带有__init__.py文件的目录。e.g:  
   [python]  
   view plain 
   copy 
   1. import module_name[,module1,...]  
2. from module import *|child[,child1,...] 说明: 多次重复使用            
                
         
            
            
            
            一、subprocess模块1.subprocess以及常用的封装函数运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2018-01-19 23:13:04
                            
                                4689阅读
                            
                                                        
                                点赞
                            
                                                                             
                 
                
                             
         
            
            
            
            :https://pythoncaff.com/docs/pymotw/shlex-parse-shell-style-syntaxes/171 目的:Shell 风格语句的语法解析。 shlex 模块实现了能够解析简单的类似 Shell 文件语法结构的类。它可用于编写特殊领域的语言,或解析被引            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2018-12-06 16:16:00
                            
                                210阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            登陆126邮箱:import timefrom splinter import Browserdef splinter(url):    browser = Bro            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-05-15 00:26:59
                            
                                42阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            python:shlex —— 简单的词法分析简介shlex 对象解析规则改进的 shell 兼容性 简介shlex 类可用于编写类似 Unix shell 的简单词法分析程序。通常可用于编写“迷你语言”(如 Python 应用程序的运行控制文件)或解析带引号的字符串。shlex 模块中定义了以下函数:shlex.split(s, comments=False, posix=True) 用类似            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-15 12:11:27
                            
                                5阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            #!/usr/bin/env python
import shlex
from subprocess import Popen,PIPE
def get_ps():
	cmd = 'ps ax -o pid,ppid,cmd'
	p = Popen(shlex.spl            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2014-09-27 16:54:12
                            
                                1503阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.函数如何被调用,通过return返回值来调用
2.生成器和return区别
yield 生成器返回对象,可以迭代
可以执行
glob模块 类似shell中的正则匹配
shlex模块  Popen 将命令参数直接分词
cmd = "ps ax -o pid,ppid,cmd"
shlex.split(cmd)
['ps','ax','-o','pid,ppid,cmd']
['mysql','            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-01 14:29:14
                            
                                101阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.函数如何被调用,通过return返回值来调用2.生成器和return区别yield 生成器返回对象,可以迭代可以执行glob模块 类似shell中的正则匹配shlex模块  Popen 将命令参数直接分词cmd = "ps ax -o pid,ppid,cmd"shlex.split(cmd)['ps','ax','-o','pid,ppid,cmd']['mysql','-u','            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2014-07-16 16:07:24
                            
                                786阅读
                            
                                                        
                                点赞
                            
                                                                             
                 
                
                             
         
            
            
            
            import shlex
import subprocess
import tkinter as tk
from tkinter import messagebox, Menu, filedialog
import winreg
from datetime import datetime
import webbrowser
import os
class UninstallerApp:            
                
         
            
            
            
            将curl解析次字典形式,代码如下: # coding:utf-8 import argparse import warnings from shlex import split from http.cookies import SimpleCookie from urllib.parse impo            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-08-22 16:51:35
                            
                                474阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            #!/usr/bin/env python
# -*- conding: utf-8 -*-
import os
import sys
import shlex
from subprocess import Popen, PIPE
work_dir = "            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2014-07-16 16:01:00
                            
                                784阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            #!/usr/bin/env python
from subprocess import Popen,PIPE
import urllib,urllib2
import shlex,re
def getIfconfig():
        p&n            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2014-09-27 16:51:37
                            
                                1111阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            进程通信 subprocess 执行程序,获取返回码或输出信息。call: 返回 ExitCode。check_call: 如果 ExitCode = 0,抛出 CalledProcessError 异常。check_output: 返回输出信息。ExitCode = 0 抛出异常。 命令行参数可以用 shlex.split 分解成列表。>>> from subprocess            
                
         
            
            
            
            目的:利用ansible检查后端服务器数据每天备份情况 平台:Django1.views.py 中添加函数import subprocess
import shlex
def backup_status(request):
   arg_mysql = "du -sh /backup/m            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2017-03-14 15:36:05
                            
                                1457阅读