簡體   English   中英

計算 a.txt 文件中的行數,得到預期結果的兩倍

[英]Counting the Number of Lines in a .txt file, getting double the expected result

我正在嘗試編寫一個非常基本的腳本,它將采用輸入文件名並簡單地計算文件中的行數,並將其打印到 CMD。 但是,當我運行它時,文件中實際的行數會增加一倍。

import sys


filename = sys.argv[-1]
with open(filename,) as f:
    LineCount = len(f.readlines())
print(LineCount)
input("Press Enter to close...")

文本文件長 208 行,我得到了 417。 這是文件的樣子。 它只是從這里開始重復。

Asset Name              In Point            Description 
Zach And Jenv4          00:00:13:11                         
Zach And Jenv4          00:00:14:54                         
Zach And Jenv4          00:00:16:37                         
Zach And Jenv4          00:00:18:20                         
Zach And Jenv4          00:00:20:03                         
Zach And Jenv4          00:00:21:45                         
Zach And Jenv4          00:00:23:28                         
Zach And Jenv4          00:00:25:11                         
Zach And Jenv4          00:00:26:54                         
Zach And Jenv4          00:00:28:36                         
Zach And Jenv4          00:00:30:20                         
Zach And Jenv4          00:00:32:03                         
Zach And Jenv4          00:00:33:45                         
Zach And Jenv4          00:00:35:28                         
Zach And Jenv4          00:00:37:11                         
Zach And Jenv4          00:00:38:54                         
Zach And Jenv4          00:00:40:37                         
Zach And Jenv4          00:00:42:20                         
Zach And Jenv4          00:00:44:03                         
Zach And Jenv4          00:00:45:44                         
Zach And Jenv4          00:00:47:28                         
Zach And Jenv4          00:00:49:11                         
Zach And Jenv4          00:00:50:54                         

這是一個可能的解釋,但 OP 應該查看f.readlines()內容以確定。

該文件具有\r\r\n行終止,並且open的默認值是在讀取時將\r\n\r\n每個轉換為換行符,因此\r\r\n被轉換為\n\n 生成具有這些行終止符的文件的一種方法是在打開文件以在 Windows 操作系統上寫入時使用沒有記錄newlines=''參數的 Python 的csv.writer

import csv

# Create "bad" file
with open('test.csv','w') as f:  # should have newline='' as a parameter as well
    r = csv.writer(f)
    r.writerow(['a','b','c'])
    r.writerow([1,2,3])
    r.writerow([4,5,6])

# Read file as OP did
with open('test.csv') as f:
    data = f.readlines()

print(len(data))
print(data)

Output:

6
['a,b,c\n', '\n', '1,2,3\n', '\n', '4,5,6\n', '\n']

newline=''參數添加到open

3
['a,b,c\n', '1,2,3\n', '4,5,6\n']

在 Excel、Notepad 或 Notepad++ 中打開 CSV 文件,您將看到相同的雙換行問題,但從命令行轉儲不會:

C:\>type test.csv
a,b,c
1,2,3
4,5,6

十六進制編輯器將顯示\r\r\n0D 0D 0A十六進制):

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM