gpt4 book ai didi

python - 了解 Python 中的文件迭代

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:31 25 4
gpt4 key购买 nike

我一直在尝试在 Python 中进行一些文本操作,但遇到了很多问题,主要是由于对 Python 中文件操作的工作原理存在根本性的误解,因此我希望能够澄清这一点。

假设我正在遍历一个名为“my.txt”的文本文件,它包含以下内容:

3 10 7 8     
2 9 8 3
4 1 4 2

我用来遍历文件的代码是:

file = open ("my.txt", 'r')
for line in file:
print line`

我从教程中复制并粘贴了上述代码。我知道它的作用,但我不知道它为什么起作用,这让我很困扰。我试图准确理解变量“line”在文件中代表什么。它是数据类型(字符串?)还是其他类型。我的直觉告诉我,每一行代表一个可以被操作的字符串(这正是我想要的),但我也明白字符串在 Python 中是不可变的。

内存在这一切中扮演什么角色,如果我的文件太大无法放入内存,它还能工作吗? line[3] 是否允许我访问每一行中的第四个元素?如果我只想在第二行工作,我可以这样做:

if line == 2: 

在 for 循环中?

可能值得注意的是,我是 Python 的新手并且来自 C\C++ 背景(不习惯不可变字符串)。我知道我把很多问题压缩成了一个问题,但对一般主题的任何澄清都会很有帮助:)

最佳答案

line 是一行文本,表示为字符串。字符串是不可变的,但这不是操纵它们的问题; all variables in Python are references, and assigning to a variable points the reference to a new object . (在 C++ 中,您不能更改引用指向的位置。)遍历文件就是遍历行,因此在每次迭代中,line 引用表示输入文件下一行的新字符串.

如果您熟悉 range-based for loops或其他语言的 for-each 结构,这就是 Python 的 for 的工作方式。循环变量不是计数器;你做不到

if line == 2:

因为 line 不是行的索引;这是线本身。你可以做

for i, line in enumerate(f):
if i == 2:
do_stuff_with(line)
break # No need to load the rest of the file

请注意,file 是内置函数的名称,因此将这个名称用于您自己的变量是个坏主意。

关于python - 了解 Python 中的文件迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18343600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com