通过Python运行wc时不一致的错误

时间:2015-08-18 19:56:24

标签: python wc

所以这是一个非常简单的脚本:

  • 遍历/遍历文件夹
  • 在每个上运行wc -l filename以获取行数

这是脚本:

import os
import subprocess

root_dir = '.'
for root, dirs, files in os.walk(root_dir):
    for fname in files:
        full_file_path = os.path.join(root, fname)
        subprocess.call(['wc', '-l', full_file_path])

当我的框中运行wc -l命令时,它运行正常并返回与脚本相同的结果(我正在运行Debian延伸)。但是,我运行openSUSE Linux的朋友在运行脚本时出现了一个错误的错误。当他运行脚本与在文件上手动运行wc -l时,所有计数均为-1。为什么会这样?

更新:(总结评论)

  • 我们的wc计算机上正在运行/usr/bin/wc的正确版本。
  • 我尝试在/usr/bin/wc上显式运行python脚本,以确保别名未在任何一个shell中运行
  • 当我在文件上运行wc -l时,我收到的文件少于我的朋友,但是在我的框中,当我通过python运行它与在shell中手动运行时它是一致的
  • 我的wc在大多数文件上运行良好,但在其中一些感兴趣的文件(它们是由另一个脚本生成的csv文件)上,vim显示的行数大一(+1) )而不是我的wc返回(但是我的朋友在手动运行时是正确的,但在运行Python时像我一样)
  • 这些错误的不一致令人抓狂
  • 我只会责怪我们的一个实现,但我可以清楚地看到其中一个文件的vim中的行数为145,而wc返回144时的行数。这似乎归因于{{1}通过简单地计算换行符而不是实际计算文件中的行来工作。但在我的电脑上我得到了一致的结果。我的朋友没有。

0 个答案:

没有答案