gpt4 book ai didi

python - subprocess.Popen 参数的编码

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:01 27 4
gpt4 key购买 nike

我有一个 Nautilus 文件浏览器的 Python 扩展(据我所知,它只在 GNU/Linux/Unix/etc 环境下运行)。我决定拆分一个昂贵的计算并将其作为子进程运行,pickle 结果并通过管道将其发回。我的问题涉及脚本的参数。由于计算需要一个路径参数和一个 bool 参数,我想我可以通过两种方式做到这一点:通过管道在腌制元组中发送参数,或者在命令行上提供它们。我发现 pickled tuple 方法比仅仅给出参数要慢得多,所以我选择了 subprocess 参数方法。

但是,我担心可能出现的本地化问题。目前,在调用者中我有:

subprocess.Popen(
[sys.executable, path_to_script, path.encode("utf-8"), str(recurse)],
stdin = None,
stdout = subprocess.PIPE)

在脚本中:

path = unicode(sys.argv[1], "utf-8")

我担心的是,将路径参数编码为 UTF-8 是一个错误,但我不确定。我想避免“它在我的机器上工作”综合症。如果用户将 latin1 作为他们的默认字符编码,这会失败吗?还是无所谓?

最佳答案

没关系:只要您的脚本知道参数需要 utf-8 编码,它就可以正确解码。 utf-8 是正确的选择,因为它可以让您编码任何 Unicode 字符串——不仅是某些语言的字符串,而不是其他语言的字符串,因为像 Latin-1 这样的选择就需要这样做!

关于python - subprocess.Popen 参数的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com