python - 如何从 python 子进程调用 LC_ALL=C 排序

标签 python sorting subprocess

<分区>

如何用python subprocess调用LC_ALL=C sort -k1 file -o file

当我尝试时: subprocess.check_call(["LC_ALL=C sort -k1 {} -o {}".format(file,file)])

出现以下错误: FileNotFoundError: [Errno 2] 没有这样的文件或目录:'LC_ALL=C sort -k1 file.txt -o file.txt'

最佳答案

语法 var=value command 是设置环境变量并运行命令的 shell 语法。 subprocess 默认情况下不提供 shell(虽然你可以通过 shell=True 获得一个 shell,但如果可以的话,通常应该尽量避免这种情况)。在 Python 中执行此操作的方法是使用 env 传入变量字典。

myenv = os.environ.copy()
myenv['LC_ALL'] = 'C'
subprocess.check_call(['sort', '-k1', file, '-o', file], env=myenv)

Python 完全能够在内部对一系列行进行排序;完全避免外部过程是一个更好的解决方案。

关于python - 如何从 python 子进程调用 LC_ALL=C 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51293480/

相关文章:

python - Json 和非英语语言

python - 如何在 Django 2.0 中为小写用户创建验证器?

python - 查找列中的关键字并将这些关键字添加到同一行的新列中

java - 按字母顺序对 Java 对象排序为 JSON 对象

java - 使用 lambda 函数对数组列表进行排序不起作用

javascript - ng 表排序不起作用

python - 如何使用 subprocess.check_call 一次性运行多个命令

python : Pandas pivot table for multiple columns at once which has duplicate values

python - 从 python 运行命令行来生成条形码

python - 查看是否存在以 root 身份运行的进程