【问题标题】:Receive arguments via shell pipe in python?通过python中的shell管道接收参数?
【发布时间】:2014-05-23 08:56:43
【问题描述】:

我有一个 python 文件,它使用 glob 在特定文件夹中查找 js 文件,然后打印出来:

print glob.glob(printfolder)

我想接收这个文件找到的文件名,并将它们传送到另一个文件,该文件计算每个文件的代码行数

所以我正在使用:

python findjava.py /home/alien/Desktop/ | python countfile.py -a

(findjava 是查找 java 文件的脚本,该地址是它应该搜索这些文件的目录的参数,countfile 是接收 1 个文件名并计算其代码行数的文件,参数 -a 是显示所有(代码行、cmets 和其他重要的东西)

但我得到以下输出:

['/home/alien/Desktop/testfile.js']
usage: countfile.py [-h] [-t] [-b] [-s] [-c] [-a] units
countfile.py: error: too few arguments

所以 countfile 仍在等待带有文件名的参数,我正在尝试使用该参数

import sys
for line in sys.stdin:
    print line

有什么想法吗? ;_;

【问题讨论】:

  • 考虑fileinput
  • 您将findjava 的结果作为标准输入传递,而不是作为命令行参数。如果您想将一个命令的输出用作另一个命令的参数,请查看xargs。见this question
  • countfile 在哪里访问命令行参数?它只是在阅读sys.stdin
  • parser = argparse.ArgumentParser(description='处理文件') parser.add_argument('-t', help='显示总行数', action="store_true") parser.add_argument( '-b', help='显示总空白行数', action="store_true") parser.add_argument('-s', help='显示总源行数', action="store_true") parser.add_argument( '-c', help='显示总评论行数', action="store_true") parser.add_argument('-a', help='显示所有行数', action="store_true") parser.add_argument(' units', action="store") args = parser.parse_args() #print parser.parse_args() file = args.units

标签: python parsing arguments glob


【解决方案1】:
print " ".join(glob.glob(printfolder))

我认为会更好:P

或许

print "\n".join(glob.glob(printfolder))

你正在传递一个像 ['asdasd','dsasdad'] 这样的字符串......这几乎肯定不是 countfile 所期望的

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 2011-10-02
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 2021-11-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多