从命令行输入获取文件
你想知道在运行Python代码时,如何从命令行获取文件名?比如说,如果你的代码打开一个文件并读取内容,但每次运行时这个文件都不一样,你该怎么做呢:
python code.py input.txt
那么代码是如何分析“input.txt”的呢?在实际的Python代码中,你需要做些什么?我知道这个问题有点模糊,但我实在不知道怎么更好地解释了。
8 个回答
31
使用 argparse 非常简单明了:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--file", "-f", type=str, required=True)
args = parser.parse_args()
现在文件的名称在这里:
args.file
你只需要稍微改变一下运行程序的方式:
python code.py -f input.txt
40
import sys
filename = sys.argv[-1]
这段话的意思是,这段代码可以获取命令行中最后一个参数。如果没有传递任何参数,那么它得到的就是脚本本身的名字,因为sys.argv[0]
代表的是正在运行的程序的名字。
44
一个很不错的选择是 fileinput
模块,它可以从命令行获取一个或多个文件名,然后把这些文件的内容当作一个大文件传给你的程序。
import fileinput
for line in fileinput.input():
process(line)
更多信息可以在 这里 找到。