<分区>
如何用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'
<分区>
如何用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/