在文本文件中查找换行符
finding new line characters in a text file
我的作业涉及创建尾部以查找文件中的最后 K
行。我们已经获得了用于此目的的缓冲区。现在,我正在尝试编写一些小东西并在文件中搜索 "\n"
个字符。我 运行 遇到了一些问题。在 python
中,我的代码返回 6,在 python3
中返回 0。文本文件的内容远不止于此。有人可以告诉我为什么这不能像我想要的那样工作吗?
def new():
try:
f = open("test.txt", "r")
count = 0
for i in f:
if i == "\n":
count = count + 1
return count
f.close()
except(FileNotFoundError):
print("No file")
我想做的是使用 seek 在文件中向后移动,并且时不时地搜索换行符,但这似乎对我不起作用。
for i in f:
并没有按照您的想法行事。文件的默认迭代器为您提供 lines
,而不是 characters
。所以你说 "Does the entire line equal just a return?"
尝试按照 "Is the last character in the line a newline?"
中所说的 if i[-1] == "\n":
您可能会注意到这是微不足道的事实,因为每个 "line" 都以换行符结束,所以简单地计算行数就足够了。
如果你想遍历单个字符,我会这样做:
for line in file:
for char in line:
dostuff()
按照您的想法命名变量,如果它们最终不是您所想的那样,也有助于排除故障。
repl.it 上的示例。变量被命名为 line
和 char
只是为了显示它们是什么,它们可以是 banana
和 henry
一样容易,尽管这样就不太清楚发生了什么. raven
为本示例模拟一个文件。
一个更简单的方法是
- 使用 Python 的 built-in 功能将文件拆分为行列表
- 根据该列表的最后 K 个元素创建你的尾巴
如果将整个文件保存在一个数组中是个问题,您可以改为读取文件 line-by-line,但只保留读取的最后 K 行,这样当您到达文件末尾时,您有你想要的尾巴。
为什么不简化逻辑并使用 Python 内置?
def new(): # not a good function name!
try:
with open('data1.txt') as f:
return f.read().count('\n')
except FileNotFoundError:
print ("No file")
我的作业涉及创建尾部以查找文件中的最后 K
行。我们已经获得了用于此目的的缓冲区。现在,我正在尝试编写一些小东西并在文件中搜索 "\n"
个字符。我 运行 遇到了一些问题。在 python
中,我的代码返回 6,在 python3
中返回 0。文本文件的内容远不止于此。有人可以告诉我为什么这不能像我想要的那样工作吗?
def new():
try:
f = open("test.txt", "r")
count = 0
for i in f:
if i == "\n":
count = count + 1
return count
f.close()
except(FileNotFoundError):
print("No file")
我想做的是使用 seek 在文件中向后移动,并且时不时地搜索换行符,但这似乎对我不起作用。
for i in f:
并没有按照您的想法行事。文件的默认迭代器为您提供 lines
,而不是 characters
。所以你说 "Does the entire line equal just a return?"
尝试按照 "Is the last character in the line a newline?"
中所说的if i[-1] == "\n":
您可能会注意到这是微不足道的事实,因为每个 "line" 都以换行符结束,所以简单地计算行数就足够了。
如果你想遍历单个字符,我会这样做:
for line in file:
for char in line:
dostuff()
按照您的想法命名变量,如果它们最终不是您所想的那样,也有助于排除故障。
repl.it 上的示例。变量被命名为 line
和 char
只是为了显示它们是什么,它们可以是 banana
和 henry
一样容易,尽管这样就不太清楚发生了什么. raven
为本示例模拟一个文件。
一个更简单的方法是
- 使用 Python 的 built-in 功能将文件拆分为行列表
- 根据该列表的最后 K 个元素创建你的尾巴
如果将整个文件保存在一个数组中是个问题,您可以改为读取文件 line-by-line,但只保留读取的最后 K 行,这样当您到达文件末尾时,您有你想要的尾巴。
为什么不简化逻辑并使用 Python 内置?
def new(): # not a good function name!
try:
with open('data1.txt') as f:
return f.read().count('\n')
except FileNotFoundError:
print ("No file")