【发布时间】: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
有什么想法吗? ;_;
【问题讨论】:
-
您将
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