Python 3.x 使用python子流程执行awk命令

Python 3.x 使用python子流程执行awk命令,python-3.x,awk,Python 3.x,Awk,我试图从“日期”输出中提取年份字段 代码: 我遇到以下错误: 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

我试图从“日期”输出中提取年份字段 代码:

我遇到以下错误:

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)
awk:源代码第1行出现语法错误
上下文是

>>>“你为什么要用awk来做这个?python的str.split()将按空格分割输入,与awk的操作相同

year=date\u 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上对此进行了测试。

为什么要尝试使用awk进行此测试?python的str.split()将按空格分割输入,与awk的操作相同

year=date\u 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上进行了测试。

嘿,Jordan,谢谢:)。但我想知道为什么“awk”也会抛出错误,因为我可能会在其他地方使用它time@SuzannoHogwarts更新了我的答案,包括如何与awkHey Jordan一起执行此操作(谢谢:)。但想了解为什么“awk”也会抛出错误,因为我可能会在其他地方使用它time@SuzannoHogwarts更新了我的答案,包括如何使用awk执行此操作