Skip to main content
 首页 » 编程设计

python之了解 Python 中的文件迭代

2025年05月04日17zfyouxi

我一直在尝试在 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 是内置函数的名称,因此将这个名称用于您自己的变量是个坏主意。