Linux如何传递日期命令';将python程序的输出作为输入作为命令行参数
我是Linux的新手。我有一个非常简单的Python脚本,它接受命令行参数并打印它们。现在我只想将Linux如何传递日期命令';将python程序的输出作为输入作为命令行参数,python,linux,pipe,command-line-arguments,Python,Linux,Pipe,Command Line Arguments,我是Linux的新手。我有一个非常简单的Python脚本,它接受命令行参数并打印它们。现在我只想将date命令的输出作为输入传递给这个Python脚本并打印它。Python脚本如下所示 import sys print "command line arguments recieved are" for i in range(0,len(sys.argv)) : print sys.argv[i] 在运行这个程序以便将date命令的输出传递给脚本时,我刚刚做了 date | python
date
命令的输出作为输入传递给这个Python脚本并打印它。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
这是将一个命令的输出作为程序输入传递的正确方法吗?
我的程序没有从date命令获取输入。我得到的输出如下所示
command line arguments recieved are
exmp.py
我真的不知道我做错了什么。请帮我解决这个问题。如果您想将
日期的输出传递给python,您可以通过管道(使用|
)传递,也可以作为命令行参数传递
考虑以下python程序:
import sys
print "Command line input:"
print sys.argv;
print ""
print "Standard input:"
print sys.stdin.read()
您可以使用以下命令行调用此程序:
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
。date周围的双引号强制date的输出为传递给python的单个命令行参数。尝试删除外部引号、内部引号以及两者
首先执行|
符号左侧的命令,然后将结果作为标准输入传递给右侧的程序。您可以使用以下选项,而不是echo
:
date | python test3.py
如果您只想将日期输入python,请查看一些内置的python模块。您将Unix shell的两种不同功能混合在一起
你所要求的可以像这样做
python exmp.py $(date)
或者,您可以将脚本更改为读取标准输入:
date | python -c 'import sys
for line in sys.stdin: print line'
表达式$(date)
执行以下操作:运行括号中的命令,并用其输出替换括号表达式
有一个名为xargs
的工具用于混合这两种功能:
date | xargs python exmp.py
从标准输入读取。您可能应该了解更多关于管道的信息,或者从pythonimport time;打印(time.strftime(“%d/%m/%Y”)