返回

两行代码,给 Python 脚本生成命令行

后端

import argparse
import sys
import os

# 创建一个 ArgumentParser 对象
parser = argparse.ArgumentParser(description='Scrape a website')

# 在 ArgumentParser 对象中添加参数
parser.add_argument('url', help='The URL to scrape')
parser.add_argument('-o', '--output', help='The file to save the output to')
parser.add_argument('-f', '--format', help='The format to save the output in', choices=['csv', 'json'])

# 解析命令行参数
args = parser.parse_args()

# 执行爬取操作
result = scrape(args.url)

# 保存输出
if args.output:
    with open(args.output, 'w') as f:
        if args.format == 'csv':
            f.write(csv.writerows(result))
        elif args.format == 'json':
            f.write(json.dumps(result))
else:
    print(result)

有时,我们可能需要将 Python 方法中的参数暴露给命令行。例如,我们可能有一个爬取网站的方法,我们希望能够在命令行中指定要爬取的 URL 和输出文件。

我们可以使用 argparse 模块来轻松地做到这一点。argparse 是一个 Python 内置的命令行解析库,它可以帮助我们轻松地解析命令行参数。

为了使用 argparse,我们需要先创建一个 ArgumentParser 对象。然后,我们可以使用 add_argument() 方法向 ArgumentParser 对象中添加参数。

import argparse

parser = argparse.ArgumentParser(description='Scrape a website')
parser.add_argument('url', help='The URL to scrape')
parser.add_argument('-o', '--output', help='The file to save the output to')
parser.add_argument('-f', '--format', help='The format to save the output in', choices=['csv', 'json'])

在上面的代码中,我们创建了一个 ArgumentParser 对象,并向其中添加了三个参数:url、output 和 format。url 参数是必填的,它指定要爬取的 URL。output 参数是可选的,它指定要保存输出的文件。format 参数也是可选的,它指定要保存输出的格式(csv 或 json)。

接下来,我们需要解析命令行参数。我们可以使用 parse_args() 方法来做到这一点。

args = parser.parse_args()

在上面的代码中,我们使用 parse_args() 方法解析了命令行参数。这将把命令行参数存储在 args 对象中。

现在,我们可以使用 args 对象中的参数来执行爬取操作。

result = scrape(args.url)

在上面的代码中,我们使用 args.url 参数来调用 scrape() 方法。scrape() 方法将爬取指定的 URL 并返回结果。

最后,我们需要保存输出。我们可以使用 open() 方法来打开一个文件,然后使用 csv.writerows() 或 json.dumps() 方法将结果保存到文件中。

if args.output:
    with open(args.output, 'w') as f:
        if args.format == 'csv':
            f.write(csv.writerows(result))
        elif args.format == 'json':
            f.write(json.dumps(result))
else:
    print(result)

在上面的代码中,我们使用 if 语句来检查 output 参数是否被设置。如果 output 参数被设置,我们使用 open() 方法打开一个文件。然后,我们使用 csv.writerows() 或 json.dumps() 方法将结果保存到文件中。如果 output 参数没有被设置,我们直接打印结果。

这就是如何使用两行代码为 Python 脚本生成命令行的。