两行代码,给 Python 脚本生成命令行
2023-10-28 16:20:00
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 脚本生成命令行的。