首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算.txt文件中的行数,得到预期结果的两倍

计算.txt文件中的行数,得到预期结果的两倍
EN

Stack Overflow用户
提问于 2022-08-12 17:57:38
回答 1查看 59关注 0票数 -1

我正在尝试编写一个非常基本的脚本,它将使用一个输入文件名,只需计数文件中的行数,并将其打印到CMD。--我在运行它时得到的是文件中实际行数的两倍。

代码语言:javascript
复制
import sys


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

文本文件是208行长,我得到417。这里是文件的样子。从现在开始就会重复。

代码语言:javascript
复制
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                         
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-12 21:32:46

这里有一个可能的解释,但是OP应该查看f.readlines()内容来确定。

该文件具有\r\r\n行终止,open的默认操作是在读取时将\r\n\r\n分别转换为换行符,以便\r\r\n被翻译为\n\n。在打开用于在Windows上写入的文件时,生成具有以下行终止的文件的一种方法将使用不带记录在案 newlines=''参数的记录在案newlines=''

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
6
['a,b,c\n', '\n', '1,2,3\n', '\n', '4,5,6\n', '\n']

newline=''参数添加到open

代码语言:javascript
复制
3
['a,b,c\n', '1,2,3\n', '4,5,6\n']

在Excel、记事本或Notepad++中打开CSV文件,您将看到相同的双换行问题,但从命令行转储不会:

代码语言:javascript
复制
C:\>type test.csv
a,b,c
1,2,3
4,5,6

十六进制编辑器将显示\r\r\n (十六进制中的0D 0D 0A):

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73338111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档