![在 Python 的命令行中输入文件名作为参数](https://linux22.com/image/1159068/%E5%9C%A8%20Python%20%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E5%90%8D%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0.png)
我想在我的代码中进行修改,以便能够在调用 python 代码的同一命令行中输入我的文件,例如:
script.py filename
目前我的代码是:
filename = raw_input('Enter a filename: ')
with open(filename) as f:
next(f)
for lines in f:
请建议我该如何处理。
答案1
答案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>