Linux 如何将日期命令的输出作为命令行参数传递给 python 程序的输入

Linux how to pass date command's output as input for a python program as command line argument

我是 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 exmp.py

这是将一个命令的输出作为程序输入传递的正确方法吗? 我的程序没有从 date 命令获取输入。我得到的输出看起来像这样

command line arguments recieved are
exmp.py

我实在想不通自己做错了什么。请帮我解决这个问题。

如果您想将 date 的输出传递给 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)执行command substitution:括号中的命令为运行,其输出代入括号表达式

有一个名为 xargs 的工具可以混合两者:

date | xargs python exmp.py