在Python中,字符串序列到底是什么?(或者是油嘴滑舌的虫子?)

在Python中,字符串序列到底是什么?(或者是油嘴滑舌的虫子?),python,python-2.7,glib,Python,Python 2.7,Glib,我知道这个问题看起来很愚蠢,但我真的搞不懂。我天真地认为字符串序列就是字符串列表。但是,这一点失败了: (pid, stdin, stdout, stderr) = glib.spawn_async( argv=["foo", "bar"], envp=None, flags=glib.SPAWN_SEARCH_PATH + glib.SPAWN_CHILD_INHERITS_STDIN, standard_input=True, standard_out

我知道这个问题看起来很愚蠢,但我真的搞不懂。我天真地认为字符串序列就是字符串列表。但是,这一点失败了:

(pid, stdin, stdout, stderr) = glib.spawn_async(
    argv=["foo", "bar"],
    envp=None,
    flags=glib.SPAWN_SEARCH_PATH + glib.SPAWN_CHILD_INHERITS_STDIN,
    standard_input=True,
    standard_output=True,
    standard_error=True)
由于以下错误而失败:

TypeError: glib.spawn_async: first argument must be a sequence of strings
我尝试了一个元组,但没有更好的结果

如果不是列表,那么什么是字符串序列?我认为可能存在Python-Glib缺陷,但我不相信这种缺陷真的存在。我在网上发现了一条类似的消息,但我不知道这是一个错误,还是一个错误

--编辑--

使用这个更短的样本,结果相同:

(pid, stdin, stdout, stderr) = glib.spawn_async(argv=["foo", "bar"])
根据海报要求,以下是完整的跟踪:

Traceback (most recent call last):
  File "<...>/test.py", line 92, in <module>
    run()
  File "<...>/test.py", line 62, in run
    standard_error=True)
TypeError: glib.spawn_async: first argument must be a sequence of strings
回溯(最近一次呼叫最后一次):
文件“/test.py”,第92行,在
运行()
文件“/test.py”,第62行,运行中
标准(错误=真)
TypeError:glib.spawn\u async:第一个参数必须是字符串序列

总结对该问题的评论:

  • 字符串不应该是unicode对象。如果您有Python3或来自uuu future uuuu导入unicode文本的
    ,请通过
    b“foo”
    语法生成字节文本
  • envp
    参数似乎与其文档有所不同。不要向它提供任何信息。如果你不打算使用它,就不要提供那个关键词/位置

  • 嗯,很有趣。。。你百分之百确定就是那条线吗?字符串列表肯定是字符串序列扫描显示完整的回溯?当我粘贴代码样本时,我得到:
    TypeError:glib.spawn\u async:第二个参数必须是字符串序列
    ,这与您的错误类似,但在一个重要方面有所不同。你确定你的密码不是说秒吗。根据我发现的,
    envp=None
    是有效的第二个参数。您使用的是哪个版本?@user2357112和@kwatford:将示例缩短到更短的
    (pid、stdin、stdout、stderr)=glib.spawn_async(argv=[“foo”、“bar]”)给出了相同的结果。我在Ubuntu12.04上运行Python 2.7.3,如果我理解正确的话,关于Unicode字符串的提示适用于所有Glib函数。在某些地方,您可能可以使用Unicode,但它可能要求您将其编码为Glib/gobject/任何期望的编码方式(通过
    foo.encode('utf-8')
    或类似方式)。我对这些库了解不够,无法告诉您它们对unicode的支持。