2015-02-09 110 views
2

我是Linux的新手。我有一个非常简单的Python脚本,它接受命令行参数并打印它们。现在我只想将date命令的输出作为输入传递给此Python脚本并打印出来。 Python脚本看起来像这样。Linux如何通过日期命令的输出作为python程序的输入作为命令行参数

import sys 
print "command line arguments recieved are" 
for i in range(0,len(sys.argv)) : 
    print sys.argv[i] 

虽然为了使date命令的输出传递给剧本我只是做了

date | python exmp.py 

这是一个命令的输出传递作为程序的输入正确的方式运行此程序? 我的程序没有从日期命令中获取输入。我得到的输出是这样的

command line arguments recieved are 
exmp.py 

我真的无法找出我在做什么错误的事情。请帮我解决这个问题。

+0

从标准输入读取。你可能应该更多地了解管道。 – 2015-02-09 10:57:45

+0

或来自python'import time;打印(time.strftime(“%d /%m /%Y”))' – 2015-02-09 11:42:20

回答

1

如果您想将date的输出传递给python,您可以将其输出(使用|),或者您可以将它作为命令行参数传递。

考虑下面的Python程序:

可以调用与在命令行上此程序:

echo "hmm, this is text" | python test3.py "`date`" 

当我运行程序我得到:

Command line input: 
['test3.py', 'Mon 9 Feb 21:10:00 AEST 2015'] 

Standard input: 
hmm, this is text 

左边的日期左侧引号指定应该运行date,并且您不只是指文字date。日期周围的双引号强制日期的输出是传递给python的单个命令行参数。尝试删除外部引号,内部引号和两者。

首先执行|符号左侧的命令,然后将结果作为标准输入传递给右侧的程序。取而代之的echo你可以使用:

date | python test3.py 

如果你只是想获得日起蟒蛇,看看一些内置的Python模块的。

0

您正在混合Unix shell的两个不同的工具。

你所要求可以像

python exmp.py $(date) 

,或者你可以改变你的脚本来完成读取标准输入:

date | python -c 'import sys 
for line in sys.stdin: print line' 

表达$(date)执行command substitution:括号中的命令运行,并且其输出被替换为括号表达式。

有一个混合两个叫xargs工具:

date | xargs python exmp.py 
相关问题