您的preprocess.py文件正在尝试读取sys.argv [1]表单并将其作为文件打开.

如果将-h传递给命令行,则会尝试使用该名称打开文件.

拆分命令行解析处理

您的预处理函数不关心命令行参数,它应该将打开的文件描述符作为参数.

因此,在解析命令行参数之后,您应该注意提供文件描述符,在您的情况下它将是sys.stdin.

使用docopt的示例解决方案

argparse没有任何问题,我最喜欢的解析器是docopt,我将用它来说明命令行解析的典型拆分,准备最终函数调用和最终函数调用.您也可以使用argparse实现相同的功能.

首先安装docopt:

$pip install docopt

这是fromstdin.py代码:

"""fromstdin - Training and Testing Framework

Usage: fromstdin.py [options]

Options:

--text= Text model [default: text.txt]

--features= Features model [default: features.txt]

--test= Testing set [default: testset.txt]

--vectorizer= The vectorizec [default: vector.txt]

Read data from file. Use "-" for reading from stdin.

"""

import sys

def 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("

")

print "processing done"

if __name__ == "__main__":

from docopt import docopt

args = docopt(__doc__)

print args

infile = args[""]

textfile = args["--text"]

featuresfile = args["--features"]

testfile = args["--test"]

vectorizer = args["--vectorizer"]

main(infile, textfile, featuresfile, testfile, vectorizer)

可以这样称呼:

$python fromstdin.py

Usage: fromstdin.py [options]

显示帮助:

$python fromstdin.py -h

fromstdin - Training and Testing Framework

Usage: fromstdin.py [options]

Options:

--text= Text model [default: text.txt]

--features= Features model [default: features.txt]

--test= Testing set [default: testset.txt]

--vectorizer= The vectorizec [default: vector.txt]

Read data from file. Use "-" for reading from stdin.

使用它,从stdin喂养:

(so)javl@zen:~/sandbox/so/cmd$ls | python fromstdin.py -

{'--features': 'features.txt',

'--test': 'testset.txt',

'--text': 'text.txt',

'--vectorizer': 'vector.txt',

'': '-'}

processing

input parameters text.txt features.txt testset.txt vector.txt

reading input stream

bcmd.py

callit.py

fromstdin.py

scrmodule.py

processing done

main func done

pythonstdin_Python从Stdin读取参数相关推荐

  1. 如何在Python中从stdin读取

    There are three ways to read data from stdin in Python. 在Python中,有三种方法可以从stdin读取数据. sys.stdinsys.std ...

  2. Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)

    1. 命令行参数 向 shell 脚本传递数据的最基本方法是使用命令行参数.命令行参数允许在运行脚本时向命令行添加数据. $ ./addem 10 30 本例向脚本 addem 传递了两个命令行参数( ...

  3. Python解析命令行读取参数 -- argparse模块

    在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写 ...

  4. linux写参数文件,linux下纯C++读取参数配置文件

    微软把程序猿养懒了.如果你在windows里写程序,那么本文你可以不看,有GetPrivateProfileString等来读取:如果你在qt里写程序,那么本文也可以不看.如果你在linux或者mac ...

  5. python 命令行解析模块_Python解析命令行读取参数 -- argparse模块

    在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写 ...

  6. 为什么在C ++中从stdin读取行比Python慢​​得多?

    我想比较使用com/thread-373690-1-1.html'>Python和C ++从stdin读取的字符串输入的行数,并震惊地看到我的C ++代码运行速度比等效的Python代码慢一个数 ...

  7. java从配置文件中读取参数

    java从配置文件中读取参数的方式 有的时候我们需要将一些固定的配置信息写到yml文件中去,然后在类中在读取 #首先就得先在yml文件中配置参数 upload:param:"test&quo ...

  8. 分区 读取参数错误_如何修复“警告:重新读取分区表失败,错误22:参数无效”在Linux上错误...

    分区 读取参数错误 If you are getting the following error while trying to change the default fat32 partition ...

  9. C++:从json文件中读取参数/创建文件夹/位拼接

    目录 1.从json文件中读取参数 2.创建文件夹 3.位运算拼接 1.从json文件中读取参数 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml ...

最新文章

  1. elasticdump安装_elasticsearch导出、导入工具-elasticdump
  2. 多模态人物识别技术及其在爱奇艺视频场景中的应用 | 公开课笔记
  3. 相关滤波跟踪(MOSSE)
  4. foreach ($cc as $key = $item);$item加与不加的区别
  5. [转载][记录]javascript生成不重复的随机数
  6. rubymine 保存成unix格式_如何免费在线试用 200+ Linux 和 Unix 发行版?
  7. 计划的执行与回顾的重要性与必要性
  8. 项目实训第二周(车道线检测)
  9. [转]Linux统计代码行数
  10. 近代物理实验 核磁共振的稳态吸收(含数据及参考题)
  11. DHCP动态获取IP地址流程
  12. NOIP2011提高组初赛不定项选择第5题
  13. mac加密_如何加密Mac的Time Machine备份
  14. UNIAPP/微信小程序-下拉刷新的操作
  15. 使用MMDetection训练自己的数据集
  16. I2C总线的SDA和SCL
  17. 博瑞云音箱云喇叭开发文档API接口文档开发指南(21-12-20)
  18. linux系列之-jar包文件替换
  19. 2020年春节复工后的十大高薪职业,IT技术岗榜上有名!
  20. tcgames玩绝地求生类手机游戏鼠标失灵和不能扔手雷问题看这里

热门文章

  1. zero ecilpse下载_推荐10个免费图片下载网站,助你摆脱找图烦恼!建议收藏
  2. 没有富士康?外媒称苹果新款iPhone SE由和硕独家组装
  3. NBA过上中国年 用五福福卡为球迷送祝福
  4. 自如:全额承担“望京跑路二房东”受害客户损失,预计约500余万元
  5. 百度Apollo开通上海自动驾驶示范路线 落地第5城
  6. 这届年轻人,连泡面也买不起了
  7. 罗永浩直播间再回应直播售假:全方位整改 成立质控实验室
  8. 阿里文娱再调整:李捷出任阿里影业总裁,戴玮任文娱COO
  9. iPhone 12的尺寸有变化:可能比新款iPhone SE还小
  10. 微信又上线了新功能,聊天再也不会发错群了?