PYTHON从命令行获取文件

Nav*_* C. 38 python command input

运行Python代码时如何从命令行获取文件名?就像你的代码打开一个文件并读取该行一样,但是每当你运行它时文件都会有所不同,你怎么说:

python code.py input.txt
Run Code Online (Sandbox Code Playgroud)

所以代码分析"input.txt"?你需要在实际的Python代码中做什么?我知道,这是一个非常模糊的问题,但我真的不知道如何更好地解释它.

kin*_*all 41

一个很好的选择是fileinput模块,它将从命令行获取任何或所有文件名,然后将内容提供给您的脚本,就像它们是一个大文件一样.

import fileinput
for line in fileinput.input():
    process(line)
Run Code Online (Sandbox Code Playgroud)

更多信息在这里.


agf*_*agf 30

import sys
filename = sys.argv[-1]
Run Code Online (Sandbox Code Playgroud)

这将获得命令行上的最后一个参数.如果没有传递参数,它将是脚本名称本身,sys.argv[0]正在运行的程序的名称.


小智 15

使用argparse非常直观:

import argparse
parser = argparse.ArgumentParser()                                               

parser.add_argument("--file", "-f", type=str, required=True)
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

现在该文件的名称位于:

args.file
Run Code Online (Sandbox Code Playgroud)

你只需要以不同的方式运行程序:

python code.py -f input.txt
Run Code Online (Sandbox Code Playgroud)


Mar*_*nen 10

命令行参数可通过sys模块的argv列表以列表形式提供.列表中的第一个元素是程序的名称(sys.argv[0]).其余元素是命令行参数.

另请参阅getopt,optparseargparse模块以进行更复杂的命令行解析.