获取Python中文本文件的换行统计

分析技术

我在git文件中遇到了讨厌的CRLF / LF冲突,该冲突可能是从Windows计算机提交的。是否有跨平台的方法(最好是在Python中)来检测文件中占主导地位的换行类型?

我有以下代码(基于来自https://stackoverflow.com/a/10562258/239247的想法):

import sys
if not sys.argv[1:]:
  sys.exit('usage: %s <filename>' % sys.argv[0])

with open(sys.argv[1],"rb") as f:
  d = f.read()
  crlf, lfcr = d.count('\r\n'), d.count('\n\r')
  cr, lf = d.count('\r'), d.count('\n')
  print('crlf: %s' % crlf)
  print('lfcr: %s' % lfcr)
  print('cr: %s' % cr)
  print('lf: %s' % lf)
  print('\ncr-crlf-lfcr: %s' % (cr - crlf - lfcr))
  print('lf-crlf-lfcr: %s' % (lf - crlf - lfcr))
  print('\ntotal (lf+cr-2*crlf-2*lfcr): %s\n' % (lf + cr - 2*crlf - 2*lfcr))

但这给统计信息带来了错误(对于此文件):

crlf: 1123
lfcr: 58
cr: 1123
lf: 1123

cr-crlf-lfcr: -58
lf-crlf-lfcr: -58

total (lf+cr-2*crlf-2*lfcr): -116
索拉特
import sys


def calculate_line_endings(path):
    # order matters!
    endings = [
        b'\r\n',
        b'\n\r',
        b'\n',
        b'\r',
    ]
    counts = dict.fromkeys(endings, 0)

    with open(path, 'rb') as fp:
        for line in fp:
            for x in endings:
                if line.endswith(x):
                    counts[x] += 1
                    break
    print(counts)


if __name__ == '__main__':
    if len(sys.argv) == 2:
        calculate_line_endings(sys.argv[1])

    sys.exit('usage: %s <filepath>' % sys.argv[0])

提供文件输出

crlf: 1123
lfcr: 0
cr: 0
lf: 0

够了吗

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取Python中文本文件的换行统计

来自分类Dev

获取Java中文本文件的内容?

来自分类Dev

如何在python中获取文本文件中的统计信息

来自分类Dev

遍历python中文本文件中的列

来自分类Dev

无法计算python中文本文件中的行数

来自分类Dev

列出python中文本文件中的某些行

来自分类Dev

python中文本文件中的词频

来自分类Dev

Python中文本文件的条件分块

来自分类Dev

RDD中文本文件的标题

来自分类Dev

Python创建不带换行符的文本文件

来自分类Dev

在我的C程序中创建函数?-获取2个文本文件的统计信息

来自分类Dev

从文本文件中获取数据时,如何在txt文件中换行?

来自分类Dev

从文本文件中获取数据时,如何在txt文件中换行?

来自分类Dev

Python:读取和获取文本文件的某些部分

来自分类Dev

使用python从文本文件中获取IP

来自分类Dev

从pyttsx python中的文本文件中获取数据

来自分类Dev

从文本文件python写入文本文件

来自分类Dev

计算Python中文本文件列的平均值

来自分类Dev

比较 Python 3 中文本文件中的元组值

来自分类Dev

服务网页中文本文件的内容

来自分类Dev

逐行修改c ++中文本文件的内容

来自分类Dev

服务网页中文本文件的内容

来自分类Dev

Qt中文本文件的到期日期

来自分类Dev

删除R中文本文件的行

来自分类Dev

计算C中文本文件每行的字符数

来自分类Dev

WordPress中文本文件中的jQuery iFrame变量

来自分类Dev

R中文本文件中特定字符(“)的问题

来自分类Dev

从文本文件获取行-PHP

来自分类Dev

PHP获取文本文件的中间