python - 在 Python 中将 Linux 命令作为原始字符串

标签 python linux string bash

)我已经确认我的 Linux 命令在终端中有效,但是当我尝试从 python 调用它时它中断了。

该命令有点长并且有很多单引号,所以我将它用三个双引号 (""") 括起来,以便 python 可以将其解释为原始字符串(或者我认为如此)。但是,当我运行它时我得到了

sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file 

但是我对我的单引号和双引号进行了两次和三次检查,我不知道从这里去哪里。

查看下面的测试脚本

import os

os.system("""awk -F ' *[[:alnum:]_]*: *' 'BEGIN         {h="insert_job;box_name;command;owner;permission;condition;description;std_out_file;std_err_file;alarm_if_fail"; print h; n=split(h,F,/;/)} function pr() {if(F[1] in A) {for(i=1;i<=n;i++)printf "%s%s",A[F[i]],(i<n)?";":RS}} /insert_job/  {pr(); delete A} {for(i in F){if($0~"^"F[i])A[F[i]]=$2}} END           {pr()}' ./output/JILS/B7443_dev_jil_20140306104313.csv > /trvapps/autosys/admin/EPS/output/JILS/testout.txt""")

仅供引用,我使用的是 Python 2.4.3,因此我使用 os 而不是子进程。

最佳答案

为了您自己的理智,请尝试使用 pipes.quote(如果 2.4 中不存在,则使用类似的东西)、' '.join(words)'\n'.join(lines) 以便能够构建命令而不是使用单个复杂字符串(如果您将它放入 Python 中)。更好的解决方案是调用类似 @kojiro suggested 的脚本.

看起来您正在做一些简单的 CSV 修改。如何检查 SO 以获取有关在 Python 中执行此操作的提示?

无论如何,一行400多个字符的awk足以让任何人感到局促不安,而在已经具有出色的字符串处理功能的Python中这样做,只是将痛苦传递给下一个开发者。这会很生气。

关于python - 在 Python 中将 Linux 命令作为原始字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22230294/

相关文章:

android - Ubuntu - 如何将整个 Android 项目提交到本地存储库?

string - VBA Excel 查找字符串中的最后一个特定实例

c - 如何从一个程序与另一个长时间运行的程序进行通信?

linux - 如何实例化和使用 dma 驱动程序 linux 模块

java - 检查干草堆是否包含一组针的最快方法

javascript - 在 Javascript 中使用正则表达式提取姓名和电子邮件

Python/C-API : Add class to module

python - 使用 lambda 和 defaultdict

python - Perl 中 $1 的 Python 等价物是什么,或者正则表达式中的任何其他特殊变量?

python - 预测概率