区分大小写排序Windows命令行

时间:2016-01-23 20:30:39

标签: python windows command-line

我有一个Python文件,它调用底层操作系统提供的区分大小写的排序例程。该程序最初在 Unix 中进行了测试。

代码片段如下所示:

def sort(path, filename, args=''):
   s = 'LC_ALL=C sort -S 50% --parallel=4 {0} {1} -o {1}'
   status = subprocess.call(s.format(args, os.path.join(path, filename)), shell=True)
   if status != 0:
      raise Exception('unable to sort file: {}'.format(filename))

但是,在 Windows 中运行此程序会引发错误

"LC_ALL=C :Command not found"

和默认"排序" Windows中的例程区分大小写。

是否有任何相应的区分大小写的例程我可以在Windows中调用或修改此命令以解决此问题?

1 个答案:

答案 0 :(得分:1)

Unix中,LC_ALL是覆盖本地化设置的环境变量。您可以使用sort标记在Windows /L命令中覆盖本地化设置。

尝试以下方法。 我没有测试它。 Windows排序命令基于documentation放在一起。
此外,对于平台确定,请查看How can I find the current OS in Python? [duplicate]

import os
import sys
import subprocess


def sort(path, filename, args=''):
    if 'win' in sys.platform.lower():
        s = 'sort /L /C {0} /o {1}'
    else:
        s = 'LC_ALL=C sort -S 50% --parallel=4 {0} {1} -o {1}'
    status = subprocess.call(s.format(args, os.path.join(path, filename)), shell=True)
    if status != 0:
      raise Exception('unable to sort file: {}'.format(filename))