首页 > 解决方案 > Python:带有存储在变量中的grep值的Shell总是附加一行

问题描述

我忘了添加,我必须从 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"

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

标签: pythonshellgrepsubprocess

解决方案


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

  • 作为一个整体
    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
            line = file.readline()
        print("Fail")

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


推荐阅读