2011-08-11 88 views
30

当您运行Python代码时,如何从命令行获取文件名?就像如果你的代码打开一个文件并读取线,但该文件变化的,只要你运行它,怎么对你说:PYTHON从命令行获取文件

python code.py input.txt 

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

回答

23
import sys 
filename = sys.argv[-1] 

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

37

一个不错的选择是fileinput模块,它将从命令行抓取任何或所有文件名,然后将内容作为一个大文件提供给脚本。

import fileinput 
for line in fileinput.input(): 
    process(line) 

更多信息here

8

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

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

-1

只需使用基本的命令raw_input

声明输入文件名字符串现在

inFile = "" 
inFile = raw_input("Enter the input File Name: ") 

您可以通过open(inFile,'w')

+0

完全错过了问题的要点 – JPCF

11

使用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