我有以下输入文件“testFile.txt”:
$ cat testFile.txt
111 // mNx
222 // mNy not nMx
333 // mNz also not nMx
我想得到mNx的值,但是其他一些行包含关于mNx的注释。在Unix命令行上使用grep查找正确的行:
$ grep mNx testFile.txt
111 // mNx
222 // mNy not mNx
333 // mNz also not mNx
但是
$ grep "// mNx" testFile.txt
111 // mNx
好的,到目前为止还不错,但是我想用Python调用grep。从this post开始
from subprocess import Popen, PIPE
def grep1(inFile, string):
COMMAND = 'grep %s %s' % (string, inFile)
process = Popen(COMMAND, shell=True, stderr=PIPE, stdout=PIPE)
output, errors = process.communicate()
return output
mNx = grep1('testFile.txt', 'mNx')
print mNx
这给了
111 // mNx
222 // mNy not mNx
333 // mNz also not mNx
如果我用
mNx = grep1('testFile.txt', '// mNx')
它返回以下内容:
testFile.txt:111 // mNx
testFile.txt:222 // mNy not mNx
testFile.txt:333 // mNz also not mNx
我尝试过"\/\/ mNx"
、r"// mNx"
、r"\/\/ mNx"
等,但无法重现本机的grep
行为。在我的Python字符串中有什么东西被转义了吗?怎么回事
将函数调用更改为
mNx = grep1('testFile.txt', '"// mNx"')
问题是,我们需要命令是Python字符串文本
'grep "// mNx" testFile.txt'
只有在
\
时才需要转义/
在Python中可以按原样表示相关问题 更多 >
编程相关推荐