Python 面试题, Python 中 read,readline,readlines 有哪些区别?
Python 面试题, Python 中 read,readline,readlines 有哪些区别?
QA
Step 1
Q:: Python 中 read、readline、readlines 有哪些区别?
A:: 在 Python 中,read、readline 和 readlines 都是用于从文件中读取内容的函数,但它们的使用场景和返回结果有所不同:
1. read(size=-1)
:读取整个文件或指定大小的字符,并将其作为字符串返回。如果不给定参数 size 或 size 为负值,则读取整个文件。
2. readline(size=-1)
:读取一行内容并返回该行字符串。如果指定了 size,则最多读取 size 个字符。
3. readlines(hint=-1)
:读取文件中的所有行,并将每一行作为一个元素的列表返回。如果给定了 hint 参数,则尝试读取指定的字节数,可能返回的行数少于文件的实际行数。
Step 2
Q:: 在读取大文件时,为什么不推荐使用 read()
?
A:: 当读取一个非常大的文件时,使用 read() 会将整个文件的内容加载到内存中,这可能会导致内存溢出或程序崩溃。相反,readline()
或者通过迭代文件对象来逐行读取文件内容更为合适,这样可以减少内存占用。
Step 3
Q:: 如何高效地读取一个超大文件的前 10
行?
A:: 你可以使用迭代器逐行读取文件,并结合计数器来只读取前 10
行内容。例如:
with open('largefile.txt', 'r') as file:
for i, line in enumerate(file):
if i < 10:
print(line.strip())
else:
break
Step 4
Q:: Python 的 with 语句在文件操作中的作用是什么?
A:: with 语句用于处理上下文管理器,最常见的用途是在文件操作中。使用 with 打开文件时,文件在操作结束后会自动关闭,避免了忘记关闭文件可能导致的资源泄露问题。
Step 5
Q:: 如何处理读取文件时可能发生的异常?
A:: 常见的文件读取异常包括文件不存在(FileNotFoundError)、权限不足(PermissionError)等。可以通过 try-
except 块来捕获和处理这些异常。例如:
try:
with open('file.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print('File not found')
except PermissionError:
print('Permission denied')