Python:grep值存储在变量中的Shell总是追加一行

问题描述 投票:2回答:1

我忘了添加,我必须从python调用shell,我有一个文件

cat file.txt
b
bb
bbb

如果只有“ bb”,则打印,否则失败,

str=subprocess.check_output('grep bb file.txt || echo 2',shell=True)
print 'str='+str  # This always str=bb and an extra line
if (str == 'bb'):   # Wish  better way like str == '1'
  print "Pass"
elif(str == '2') :
  print "Fail"

我认为应该有更好的处理方法。

python shell grep subprocess
1个回答
0
投票

尝试打开文件并逐行或整体读取:

  • 整体上
    with open("file.txt", "r") as file:
        data = file.read()
        if "bbb" in data:
            print("Pass")
        else:
            print("Fail")
  • 或逐行
    with open("file.txt", "r") as file:
        line = file.readline()
        while line:
            if "bbb" == line:
                print("Pass")
                break
        print("Fail")

编辑:我看到您编辑了您的问题。 if语句可以更改,并且不会影响程序,因此您检查的内容(例如'bbb'或'11')无关紧要。逐行检查也是一个更好,更快的选择。

© www.soinside.com 2019 - 2024. All rights reserved.