2.6.1文件操作基本知识
Python文件操作是Python编程中的一个重要部分,它允许我们读取、写入、修改和删除文件。以下是一些Python文件操作的基本知识:
1.Python文件对象常用方法
Python文件对象提供了多种方法,用于对文件进行读取、写入、定位和查询等操作。以下是文件对象的一些常用方法:
读取方法
- read([size]):从文件中读取指定数量的数据(如果指定了
size
)或读取整个文件(如果未指定或size
为负数)。 - readline([size]):读取文件中的一行。如果指定了
size
,则最多读取size
个字符。 - readlines([sizehint]):读取文件中的所有行,并返回一个包含所有行的列表。如果指定了
sizehint
,则返回的行数可能会少于总行数。 - readinto(b):读取指定数量的数据到字节数组
b
中。返回读取的字节数。
写入方法
- write(s):将字符串
s
写入文件。返回写入的字符数。 - writelines(lines):将一个字符串列表
lines
写入文件,不需要在列表中添加换行符。
定位方法
- seek(offset[, whence]):移动文件读取/写入的指针到指定位置。
offset
是相对于某个参考点的偏移量,whence
是参考点(默认为0,表示文件开头;1表示当前位置;2表示文件末尾)。 - tell():返回当前文件读取/写入的指针位置。
查询方法
- flush():将缓冲区中的任何未写入的数据写入文件,并清空缓冲区。通常用于确保所有待写入的数据都已被写入文件。
- closed:返回一个布尔值,表示文件是否已关闭。
- name:返回文件的名称。
- mode:返回文件打开时使用的模式。
其他方法
- close():关闭文件。这是一个很重要的方法,应该在使用完文件后调用,以确保释放所有资源。然而,当使用
with
语句时,Python会自动关闭文件。 - fileno():返回文件的文件描述符(一个小的非负整数),它用于在底层系统调用中标识文件。
- isatty():如果文件是一个交互式终端,则返回
True
,否则返回False
。
上下文管理器
使用with
语句时,Python会自动管理文件的打开和关闭。在with
块内,你可以使用文件对象进行读写操作,当退出with
块时,Python会确保文件被正确关闭。
示例:
with open('example.txt', 'r') as file:
content = file.read()
print(content) # 无需显式调用file.close()
在上面的示例中,当with
块结束时,file
对象会自动关闭,即使发生了异常也是如此。
了解这些常用方法可以帮助你更有效地使用Python的文件操作功能。在编写代码时,请确保正确处理异常,并在不再需要文件时关闭它们以避免,资源泄漏。
2.Python文件常用操作
2.1打开文件
在Python中,使用open()
函数来打开一个文件。这个函数需要至少一个参数,即文件名。例如:
file = open('filename.txt', 'r')
这里的'r'
表示文件以只读模式打开。Python中常用的文件打开模式有:
'r'
:只读模式(默认)。'w'
:写入模式,如果文件存在则将其覆盖。如果文件不存在,创建新文件。'a'
:追加模式,如果文件存在,文件指针将会放在文件的结尾。也就是说,新的内容将被写入到已有内容之后。如果文件不存在,创建新文件。'r+'
:读写模式,文件指针将会放在文件的开头。'w+'
:写读模式,如果文件存在则将其覆盖。如果文件不存在,创建新文件。'a+'
:写读模式,如果文件存在,文件指针将会放在文件的结尾。也就是说,新的内容将被写入到已有内容之后。如果文件不存在,创建新文件。
2.2读取文件
一旦文件被打开,你就可以使用read()
方法读取文件的内容。例如:
content = file.read()
print(content)
read()方法会读取整个文件的内容。如果想按行读取文件,可以使用
readline()或
readlines()方法。
2.3写入文件
如果文件是以写入或追加模式打开的,可以使用write()
方法将内容写入文件。例如:
file = open('filename.txt', 'w')
file.write('Hello, world!')
file.close()
请注意,在使用完文件后,应该使用close()
方法关闭文件。这是一个好习惯,可以防止数据丢失和资源泄漏。
2.4使用with语句
为了更优雅地处理文件,我们可以使用Python的with
语句。这个语句可以确保文件在操作完成后被正确关闭,即使在处理文件时发生了异常也是如此。例如:
with open('filename.txt', 'r') as file:
content = file.read()
print(content)
在这个例子中,当with
语句块执行完毕后,file
对象会自动关闭,无需显式调用close()
方法。
以上就是Python文件操作的基本知识。实际上,Python的文件操作功能非常强大,还支持更多的高级功能,如文件指针的移动、文件的随机访问等。我们你可以查阅Python的官方文档或相关教程来了解更多信息。
3.内置函数open用法
在Python中,open
是一个内置函数,用于打开文件,并返回一个文件对象。这个对象提供了许多方法用于对文件进行读取、写入或执行其他操作。
open
函数的基本语法如下:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file
:必需参数,表示要打开的文件名(可以包含路径)。mode
:可选参数,表示文件打开模式。默认为'r'
,表示只读模式。buffering
:可选参数,设置缓冲策略。encoding
:可选参数,指定文件的字符编码。errors
:可选参数,指定编码或解码错误时的处理方式。newline
:可选参数,控制换行符的行为。closefd
:可选参数,如果为True
,则在文件关闭后也会关闭底层的文件描述符(仅用于底层文件接口)。opener
:可选参数,一个用于打开文件的可调用对象,通常不需要使用。
2.6.2文本文件操作
在上文中,已经将Python文件操作的知识进行介绍,关于文本文件操作,大致与上述介绍一致,为了加深大家的印象,在此专就这一内容再进行学习。
读取文本文件
要读取文本文件的内容,可以使用open()
函数以只读模式('r'
)打开文件,并使用文件对象的read()
、readline()
或readlines()
方法读取内容。
# 打开文件并读取全部内容
with open('file.txt', 'r') as file:
content = file.read()
print(content)
# 打开文件并逐行读取
with open('file.txt', 'r') as file:
for line in file:
print(line, end='') # end='' 避免每行末尾的换行符被打印两次
写入文本文件
要写入文本文件,可以使用open()
函数以写入模式('w'
)或追加模式('a'
)打开文件,并使用文件对象的write()
方法写入内容。
# 写入文本文件(覆盖原有内容)
with open('file.txt', 'w') as file:
file.write('Hello, world!\n')
file.write('This is a new line.')
# 追加内容到文本文件
with open('file.txt', 'a') as file:
file.write('\nAppended text.')
修改文本文件
修改文本文件通常意味着读取文件内容,进行必要的更改,然后将更改后的内容写回到文件。由于文本文件是顺序存储的,你不能直接修改文件中的某一部分而不重写整个文件。
# 修改文本文件内容
with open('file.txt', 'r') as file:
lines = file.readlines()
# 修改特定行
lines[1] = 'This line has been modified.\n'
# 将修改后的内容写回文件(覆盖原有内容)
with open('file.txt', 'w') as file:
file.writelines(lines)
删除文本文件内容
要删除文本文件的内容,你可以以写入模式打开文件但不写入任何内容,或者简单地重新创建空文件。
# 方法一:打开文件但不写入任何内容(覆盖原有内容)
with open('file.txt', 'w') as file:
pass
# 方法二:使用os模块删除文件并重新创建
import os
os.remove('file.txt') # 删除文件
with open('file.txt', 'w') as file: # 重新创建空文件
pass
使用上下文管理器
使用with
语句可以确保文件在使用完毕后被正确关闭,这是一种推荐的做法,可以避免资源泄漏和异常处理的问题。
异常处理
在文件操作中,可能会出现各种异常,如文件不存在、没有读取权限等。为了处理这些异常,你可以使用try
...except
块。
try:
with open('file.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print("文件不存在")
except PermissionError:
print("没有读取权限")
except Exception as e:
print(f"发生错误: {e}")
了解这些基本的文本文件操作后,我们还可以根据具体需求进行更复杂的文件处理,如搜索特定内容、替换文本、按特定格式写入等。在处理文件时,请确保有足够的权限,并始终注意异常处理和数据安全。