所以这是一个非常简单的脚本:
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}通过简单地计算换行符而不是实际计算文件中的行来工作。但在我的电脑上我得到了一致的结果。我的朋友没有。