在 Python 的命令行中输入文件名作为参数

在 Python 的命令行中输入文件名作为参数

我想在我的代码中进行修改,以便能够在调用 python 代码的同一命令行中输入我的文件,例如:

script.py filename

目前我的代码是:

filename = raw_input('Enter a filename: ')
with open(filename) as f:
   next(f)
   for lines in f:

请建议我该如何处理。

答案1

我会用系统参数

import sys
filename = sys.argv[1]

sys.argv将是您的通话中的元素列表。

答案2

sys.argv对于简单的用例来说是最简单的。

对于更高级的用途,您可以使用argparse,但我更喜欢click(“命令行界面创建工具包”)这使得使用 Python 创建命令行工具变得非常容易:

import click
@click.command()
@click.argument('filename', type=click.Path(exists=True, readable=True), nargs=1)
def main(filename):
    ...

main()

使用@click.option()您还可以创建自定义标志,如--filename

这使得使用参数变得更容易,因为您可以定义自动检查的输入类型。它还会生成漂亮的错误消息并--help打印使用信息:

Usage: test.py [OPTIONS] FILENAME

Options:
  --help  Show this message and exit.

您需要安装click

# Python2:
pip install click

# Python3:
pip3 install click

答案3

使用sys模块:

import sys
with open(sys.argv[1]) as filename:
        for line in filename:
               print(line)

也可以看看如何读取/处理命令行参数?使用argparse模块创建自定义标志,例如-f <filename>

相关内容