您的
preprocess.py文件正在尝试读取表单
sys.argv[1]并将其作为文件打开。
如果您传递
-h到命令行,它将尝试使用该名称打开文件。从处理中拆分命令行解析
您的
preprocess函数将不在乎命令行参数,它将获取打开文件描述符作为参数。
因此,在解析命令行参数之后,您应该注意提供文件描述符,在这种情况下为
sys.stdin。样品溶液使用
docopt
argparse没有任何问题,我最喜欢的解析器是
docopt,我将用它来说明典型的命令行解析拆分,准备最终函数调用和最终函数调用。您也可以使用argparse实现相同的目的。
首先安装docopt:
$ pip install docopt
这里谈到的
fromstdin.py代码:
"""fromstdin - Training and Testing frameworkUsage: fromstdin.py [options] <input>Options: --text=<textmodel> Text model [default: text.txt] --features=<features> Features model [default: features.txt] --test=<testset>Testing set [default: testset.txt] --vectorizer=<vectorizer> The vectorizec [default: vector.txt]Read data from <input> file. Use "-" for reading from stdin."""import sysdef main(fname, text, features, test, vectorizer): if fname == "-": f = sys.stdin else: f = open(fname) process(f, text, features, test, vectorizer) print "main func done"def process(f, text, features, test, vectorizer): print "processing" print "input parameters", text, features, test, vectorizer print "reading input stream" for line in f: print line.strip("n") print "processing done"if __name__ == "__main__": from docopt import docopt args = docopt(__doc__) print args infile = args["<input>"] textfile = args["--text"] featuresfile = args["--features"] testfile = args["--test"] vectorizer = args["--vectorizer"] main(infile, textfile, featuresfile, testfile, vectorizer)
可以这样称呼:
$ python fromstdin.pyUsage: fromstdin.py [options] <input>
显示帮助:
$ python fromstdin.py -hfromstdin - Training and Testing frameworkUsage: fromstdin.py [options] <input>Options: --text=<textmodel> Text model [default: text.txt] --features=<features> Features model [default: features.txt] --test=<testset>Testing set [default: testset.txt] --vectorizer=<vectorizer> The vectorizec [default: vector.txt]Read data from <input> file. Use "-" for reading from stdin.
使用它,从标准输入中输入:
(so)javl@zen:~/sandbox/so/cmd$ ls | python fromstdin.py -{'--features': 'features.txt', '--test': 'testset.txt', '--text': 'text.txt', '--vectorizer': 'vector.txt', '<input>': '-'}processinginput parameters text.txt features.txt testset.txt vector.txtreading input streambcmd.pycallit.pyfromstdin.pyscrmodule.pyprocessing donemain func done
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)