从命令行输入获取文件

51 投票
8 回答
106307 浏览
提问于 2025-04-16 23:26

你想知道在运行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)

更多信息可以在 这里 找到。

撰写回答