使用python子进程

时间:2016-08-29 03:49:41

标签: python-3.x awk

我正试图从" date"中提取年份字段。产量 代码:

import sys
import os
import subprocess
per_name = input('Enter name:')
age = input('Enter age:')
to_date = subprocess.Popen(["date"],stdout=subprocess.PIPE)
date = subprocess.Popen(['awk',"'{print","$NF}'"],stdin=to_date.stdout)
act_date = date.communicate()
to_date=str(act_date)
print("Year: "+act_date)

我收到以下错误:

awk: syntax error at source line 1
context is
 >>> ' <<< 
missing }
awk: bailing out at source line 1
Traceback (most recent call last):
File "pyt_ex1.py", line 10, in <module>
print("Year: "+act_date)

请使用&#39; awk&#39;

以正确的方式提取它

1 个答案:

答案 0 :(得分:0)

为什么要尝试使用awk? python的str.split()将按空格分割输入,与awk做同样的事情。

year = date_string.split()[-1]

然后您可以获取列表的最后一个元素。事实上,你甚至不需要从bash获取日期。 Python有时间和日期时间模块。它看起来像这样:

import datetime
year = datetime.date.today().year

如果您确实想要使用awk而不是其他某种机制,那么这将起作用(请注意第二个参数中删除的引号):

date = subprocess.Popen(["awk","{print $NF}"],stdin=to_date.stdout)

在OSX和Fedora上测试过。