【发布时间】:2019-01-15 11:24:29
【问题描述】:
我正在尝试将以下 awk 行写入 python
awk -F, '{cmd="date -d \""$2"\" +%s"; cmd | getline date; printf ("%s,%d,%d\n",$1,date,$3)}' counts.csv > counts_epoch.csv
v1
import subprocess
with open("counts_epoch.csv", 'wb') as f:
subprocess.Popen(["awk", "'{cmd="date -d \""$2"\" +%s"; cmd | getline date; printf ("%s,%d,%d\n",$1,date,$3)}'", 'counts.csv'], stdout=f)
这将返回:
subprocess.Popen(["awk", "'{cmd="date -d \""$2"\" +%s"; cmd | getline date; printf ("%s,%d,%d\n",$1,date,$3)}'", 'counts.csv'], stdout=f)
^
SyntaxError: invalid syntax
v2:
with open("counts_epoch.csv", 'wb') as f:
subprocess.call(["awk", '{cmd="date -d \""$2"\" +%s"; cmd | getline date; printf ("%s,%d,%d\n",$1,date,$3)}', 'counts.csv'], stdout=f)
返回:
awk: cmd. line:1: {cmd="date -d ""$2"" +%s"; cmd | getline date; printf ("%s,%d,%d
awk: cmd. line:1: ^ unterminated string
awk: cmd. line:1: {cmd="date -d ""$2"" +%s"; cmd | getline date; printf ("%s,%d,%d
awk: cmd. line:1: ^ syntax error
有什么建议吗?谢谢!
【问题讨论】:
-
尝试在外部加上三引号
""" -
为什么不想使用 python 原生日期/时间操作函数/库?
-
不需要所有这些复杂的东西。如果要标记此“python”,请使用 python。
-
嘿伙计们,请停止使问题合法化!即使我自己也会考虑在这种情况下使用纯 Python,但这并没有使这个问题变得不那么有效。有很多正当理由可以说明为什么有人要这样做。
-
从python你调用awk调用shell调用日期?似乎必须有一种更简单的方法....
标签: python awk subprocess