Python:在字符串中搜索时出现TypeError

时间:2015-08-07 18:59:02

标签: python string python-3.x typeerror

当我运行此代码时:

public function db_backup()
{
       $this->load->dbutil();   
       $backup =& $this->dbutil->backup();  
       $this->load->helper('file');
       write_file('your_file_path/your_DB.zip', $backup); 
}

我收到以下错误:

    stdout = Popen(callbackquery, shell=True, stdout=PIPE).stdout
    output = stdout.read()
    if output.find("No records were found that matched the search criteria") == -1:
        print(output)
    else:
        # Do nothing
        print("It's fine")

我知道这与字符编码有关,但我不知道在哪里以及如何转换它?

3 个答案:

答案 0 :(得分:1)

对于那些想知道为什么会出现此问题的人。来自子流程documentation -

  

如果 universal_newlines 为True,则文件对象stdin,stdout和stderr在通用换行模式下作为文本流打开,如上面常用的参数中所述,否则它们将作为二进制流打开。 / p>

universal_newlines 的默认值为False,这意味着stdout是二进制流,它返回的数据是字节字符串。

问题出现是因为我们试图在传递DateTime.Parse(x.process_date.Value) 作为参数的字节串上执行.find()。一个非常简单的例子来展示这个 -

string

您应该>>> b'Hello'.find('Hello') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' does not support the buffer interface 数据,例如 -

.decode()

答案 1 :(得分:0)

If  "No records were found that matched the search      criteria" in output:
  Do something 

答案 2 :(得分:0)

stdout = Popen(callbackquery, shell=True, stdout=PIPE, universal_newlines=True).stdout
    output = stdout.read()