Python 命令行参数详解

不说别的,什么是 Python 命令行参数?我相信大家都不会陌生,Python 是一种广泛使用的编程语言,它可以用于数据分析、机器学习、人工智能、Web 开发、游戏开发等领域。而命令行参数是指当我们在执行 Python 脚本时,在命令行中输入的参数。Python 中可以使用 argparse 模块来解析命令行参数,以便在脚本中使用这些参数,并根据参数的不同完成不同的操作。接下来,我将深入探究 Python 命令行参数的使用方法和细节。

Python 命令行参数的语法

在 Python 中使用命令行参数需要使用 sys 模块,其实在 sys 模块中已经有一个 argv 变量,它可以用来获取命令行输入的参数。argv 变量是一个列表,其中包含了整个命令行输入的所有参数。首先,我们来看一下 argv 变量的使用方法:

```

import sys

print(sys.argv)

```

上述代码会输出一个列表,其中包含了整个命令行输入的所有参数。我们可以在命令行中输入下面的代码来调用 Python 脚本并传递参数:

```

python yourscript.py arg1 arg2 arg3

```

其中 yourscript.py 是你的 Python 脚本文件名称,arg1, arg2, arg3 是你想要传递的参数。在这种方式下,sys.argv 列表的第一个参数是你的 Python 脚本名称,其余的参数就是你在命令行中输入的参数。

我们也可以使用 argparse 模块来解析命令行参数。argparse 模块是 Python 自带的模块,可以帮助我们解析命令行参数。下面是 argparse 模块的语法:

```

import argparse

parser = argparse.ArgumentParser(description='description of my script')

parser.add_argument('positional_arg', type=str, help='description of positional argument')

parser.add_argument('-o', '--optional-arg', type=int, help='description of optional argument')

parser.add_argument('-f', '--flag', action='store_true', help='description of flag')

args = parser.parse_args()

```

上述代码中,argparse.ArgumentParser 是一个创建命令行参数解析器的类,description 参数是一段描述信息,用于解释该脚本的用途和参数的作用。add_argument 函数可以让我们指定这个参数的名称,类型,帮助信息等等。

这个例子中,“positional_arg”是位置参数,类型为字符串,不能省略。-o 选项和 —optional-arg 选项都是可选的参数并且是整数类型,可以通过 --optional-arg 或 -o 传递给脚本。-f 选项是一个标准的开关,表示“是”或“否”,如果指定了该标志,则为 True,否则为 False。

当我们将上述代码保存为 Python 脚本并在命令行输入:

```

python yourscript.py positional_value -o optional_value -f

```

这个例子中,positional_value 是位置参数的值,-o 选项的可选值为 optional_value,-f 选项开启。

Python 命令行参数的实际应用

接下来,我们来看一些使用 Python 命令行参数的实际应用。

1. 文件批量重命名

批量重命名文件是一个很常见的操作。假设你有一些文件需要重命名,而且名称大小写不一致。使用 Python 命令行参数可以轻松完成这项任务。这是一个示例代码,可以重命名文件并将它们转换为小写:

```

import os

import argparse

parser = argparse.ArgumentParser(description='Rename files to lowercase')

parser.add_argument('-p', '--path', type=str, help='Path to rename files')

args = parser.parse_args()

path = args.path

if os.path.isdir(path):

for filename in os.listdir(path):

os.rename(os.path.join(path, filename), os.path.join(path, filename.lower()))

print(f'Renamed {filename} to {filename.lower()}')

else:

print(f'{path} is not a valid directory')

```

这个脚本中,我们通过 argparse 模块引入了一个 path 参数,该参数指定了要重命名的文件所在的目录。我们使用 os 模块列出了该目录中的所有文件,并重命名了这些文件。改变文件名的方式是使用了 filename.lower() 函数,它将文件名转换为小写。经过这个脚本的处理,文件名将完全转换为小写。

2. 数据清洗和处理

当我们在进行数据分析时,常常需要将数据先进行清洗和处理。虽然有很多成熟的数据处理工具可以使用,但是如果需要改进算法或数据清洗流程,我们同样可以使用 Python 命令行参数来指定脚本所选择的数据集,数据集的大小等参数。

下面是一个示例代码,它可以读取 CSV 数据,过滤掉数据大小较小的行,并计算其中每列的平均值:

```

import argparse

import csv

parser = argparse.ArgumentParser(description='Process CSV data')

parser.add_argument('-f', '--file', type=str, help='CSV file to process')

parser.add_argument('-s', '--size', type=int, help='Number of rows to process')

args = parser.parse_args()

file = args.file

size = args.size

rows = []

with open(file, newline='') as csvfile:

reader = csv.reader(csvfile)

for i, row in enumerate(reader):

if i == 0:

continue

if size is not None and i > size:

break

if len(row) > 0:

rows.append(row)

columns = [[float(row[i]) for row in rows] for i in range(len(rows[0]))]

means = [sum(column) / len(column) for column in columns]

print('Mean:', means)

```

这个脚本中,-f 和 --file 这两个参数用于指定CSV文件,-s 和 --size 用于指定要处理的行数。首先,我们使用 csv 模块将 CSV 文件读入列表中。然后,我们使用列表推导式过滤掉数据大小较小的行。接下来,我们使用另一个列表推导式将每列数据提取出来并计算平均值。这个脚本非常简单,但是它实现了常见的数据分析流程,可以同样地应用于其他类型的数据集。

3. 网络爬虫

网络爬虫是 Python 最受欢迎的应用之一,我们可以通过命令行参数来指定要抓取的数据,如要抓取页面的数量和要抓取的页面类型等等,这些参数都可以通过命令行输入的方式来传递给 Python 爬虫脚本。

下面是一个示例代码,它可以抓取豆瓣电影排行榜,并输出排行榜中“评分较高”的电影的详情:

```

import argparse

import requests

from bs4 import BeautifulSoup

parser = argparse.ArgumentParser(description='Web scraper for Douban Top250')

parser.add_argument('-p', '--pages', type=int, help='Number of pages to scrape')

parser.add_argument('-m', '--minimum_rating', type=float, default=8.0, help='Minimum rating to display')

args = parser.parse_args()

url_template = 'https://movie.douban.com/top250?start={}&filter='

pages = args.pages

minimum_rating = args.minimum_rating

for i in range(pages):

url = url_template.format(i * 25)

r = requests.get(url)

soup = BeautifulSoup(r.text, 'html.parser')

movies = soup.find_all(class_='item')

for movie in movies:

title = movie.find('span', class_='title').get_text()

rating = movie.find('span', class_='rating_num').get_text()

if float(rating) >= minimum_rating:

print(f'Title: {title} Rating: {rating}')

```

在这个脚本中,我们使用了 argparse 模块的 pages 和 minimum_rating 参数。pages 参数用于指定要抓取的页面数量,minimum_rating 用于指定要输出的电影最低评分标准。我们使用了 requests 库来发起 HTTP 请求,使用了 BeautifulSoup 库来解析 HTML 页面。使用 CSS 选择器找到页面中的每个电影条目,然后提取电影标题和评分并输出它们的详细信息。这个脚本可以通过命令行参数来控制其行为,非常灵活和实用,可以用于其他类型的网页面数据抓取。

结论

Python 命令行参数是 Python 语言中的一个非常有用的工具,它可以让我们轻易地从命令行输入和使用参数,非常适合用于开发小工具、脚本和小型应用等场景。本文中,我们深入学习了 Python 命令行参数的使用方法和实际应用,希望本文对大家有所帮助。 www.0574web.net 宁波海美seo网络优化公司 是网页设计制作,网站优化,企业关键词排名,网络营销知识和开发爱好者的一站式目的地,提供丰富的信息、资源和工具来帮助用户创建令人惊叹的实用网站。 该平台致力于提供实用、相关和最新的内容,这使其成为初学者和经验丰富的专业人士的宝贵资源。

点赞(53) 打赏

声明本文内容来自网络,若涉及侵权,请联系我们删除! 投稿需知:请以word形式发送至邮箱18067275213@163.com

评论列表 共有 4 条评论

gay 1年前 回复TA

通过这个链接过去我收听了好多个,囧

南岸育清幼儿园 1年前 回复TA

我的网站什么时候才能到6呀。呵呵。

小蕾 1年前 回复TA

蜜蜂

百度优化教程 1年前 回复TA

很想知道以前是什么域名

立即
投稿
发表
评论
返回
顶部