python stdout=正确格式的subprocess.pipe
我的代码正在使用python stdout=正确格式的subprocess.pipe,python,subprocess,Python,Subprocess,我的代码正在使用 proc=subprocess.Popen(command,stdout=subprocess.PIPE) print(proc.stdout.readline()) 正在以以下格式获取结果 但是我想计算并获取只有DatatypeCLOB和BLOB的列名,并将它们存储在变量中,以便在进一步的过程中使用。 BLOB和Clob的Datattype的数量是动态的 例如:- ----------------------------------------------- | COLU
proc=subprocess.Popen(command,stdout=subprocess.PIPE)
print(proc.stdout.readline())
正在以以下格式获取结果
但是我想计算并获取只有Datatype
CLOB
和BLOB
的列名,并将它们存储在变量中,以便在进一步的过程中使用。
BLOB
和Clob
的Datattype
的数量是动态的
例如:-
-----------------------------------------------
| COLUMN_NAME | DATA_TYPE |
-----------------------------------------------
| C460 | VARCHAR2 |
| C459 | CLOB |
| C458 | VARCHAR2 |
| C457 | VARCHAR2 |
| C456 | CLOB |
| C8 | BLOB |
| C60901 | VARCHAR2 |
-----------------------------------------------
在这种情况下,我应该得到3个变量
C459、C456、C8
在您的情况下,我将使用正则表达式
re.findall('(?m)C(\d+)(?=.+[CB]LOB)', proc.stdout.read())
在哪里
- (?m)表示多行搜索
- C(\d+)-C字符,后跟数字
- (?=.+[CB]LOB)-非消耗未指定字符序列,后跟BLOB或CLOB
In [84]: import re
In [85]: COL_RE = re.compile('(?m)(C\d+)(?=.+[CB]LOB)')
In [86]: output = '''-----------------------------------------------
...: | COLUMN_NAME | DATA_TYPE |
...: -----------------------------------------------
...: | C460 | VARCHAR2 |
...: | C459 | CLOB |
...: | C458 | VARCHAR2 |
...: | C457 | VARCHAR2 |
...: | C456 | CLOB |
...: | C8 | BLOB |
...: | C60901 | VARCHAR2 |
...: -----------------------------------------------'''
In [87]: columns = COL_RE.findall(output)
In [88]: columns
Out[88]: ['C459', 'C456', 'C8']
下一次,你应该准备得更充分只给我['459','456']这个结果。从结果中删除C不确定why@IndrajitSwain,如果你把C移到括号里,你也会得到它。请看,我正在获取列名,但我不想打印这些列名。我想存储在变量中。作业在您的情况下有效吗?@IndrajitSwain,显然,您对Python(或该部分的编程)非常陌生。我很惊讶,因为子流程并不完全是新手级别的包。你应该学习编程。。。只需将操作结果分配给一个变量。我肯定是Python新手,但预期的输出应该动态分配给变量。在我的情况下,我不知道这一团或一团会持续多久。如果它是一个变量,我可以继续这样做。如果将多个值赋给单个变量,我的后续代码将无法工作。