前言
Python文件操作在实际应用中非常广泛,例如:
- 文件读取和处理
- 文件写入和记录
- 文件拷贝和移动
- 批量处理文件
- CSV或Excel文件处理
以上仅是部分应用场景,实际上文件操作在各种程序中都扮演着重要的角色。无论是处理文本文件、日志记录、数据导入导出、文件管理等,Python 文件操作可以提供丰富而灵活的功能来满足不同的需求。
基本操作方法
Python 提供了丰富的文件操作功能,使你能够读取、写入、创建和管理文件。
-
打开文件
可以使用open()函数来打开一个文件,该函数会返回一个文件对象。需要注意的是当以读的模式打开文件时,文件必须存在,不然会报错,若以写的模式打开不存在的文件,将会自动创建个文件。
示例:
f=open(file='./example.txt',mode='w+',encoding='utf-8') #只读模式打开example.txt文件,'utf-8'编码
也可以这么写
f=open('./example.txt','w+',encoding='utf-8')
open()函数的参数:
1.file:要打开的文件路径和名称(使用字符串表示)
- 可以是相对路径或绝对路径。
- 绝对路径(Absolute Path):从文件系统的根目录开始直到目标文件或目录的完整路径。例如,在Windows系统中,绝对路径可以是类似于C:\Users\Username\Documents\example.txt 的形式,其中 C:\ 是根目录,后面紧跟着一系列目录层级。
- 相对路径(Relative Path):相对路径是相对于当前工作目录(当前所在位置)来指定文件或目录的路径。与绝对路径不同,相对路径不需要从根目录开始,而是从当前位置出发。例如,假设当前工作目录为 C:\Users\Username\Documents,要指向同一目录下的 example.txt 文件,可以使用相对路径 example.txt 或 .\example.txt。另外,.. 表示上一级目录,可以在相对路径中使用。例如,如果当前工作目录为C:\Users\Username\Documents,要指向上一级目录的 example.txt 文件,可以使用相对路径 ..\example.txt。相对路径更具灵活性,特别适合在项目内部进行文件路径引用。
2.mode:指定文件的打开模式
- 'r':只读模式(默认)。打开后只能读取文件内容,不能写入或修改。
- 'w':写入模式。打开后会清空文件内容,如果文件不存在则创建新文件。
- 'a':追加模式。打开后在文件末尾追加内容,如果文件不存在则创建新文件。
- 'x':独占创建模式。只能用于创建新文件,如果文件已经存在,则报错。
- 'b':二进制模式。与上述模式结合使用,表示以二进制格式打开文件。
- 't':文本模式(默认)。与上述模式结合使用,表示以文本格式打开文件。
- '+':读写模式。与上述模式结合使用,表示可同时进行读取和写入操作。
绝对路径:以反斜杠('\')开头
相对路径:以斜杆('/')开头
3.encoding:指定文件的编码格式。
- 只在文本模式下有效,用于读取和写入文本时的编码处理。
- 常见的编码如'utf-8'、'gbk'等。
4.当然还有其他可选参数。
读取文件内容
打开文件后,可以使用以下方法来读取文件内容:
- read():以字符串形式一次性读取整个文件的内容,并将其返回。
- readline():每次读取文件的一行内容,并以字符串形式返回。连续调用可以逐行读取整个文件。
- readlines():一次性将文件的所有行读取到一个列表中,并返回该列表。每行作为列表的一个元素,保留了换行符('\n')。
这三个方法都可以传入一个整型参数,限制读取字符个数。当以行为读取单位时只会读取限制字符个数内的每一行。
- read()
使用read方法读取文件的整个内容。
示例:
f=open('./example.txt','r',encoding='utf-8')
text=f.read()
print(text)
f.close()
'''
输出结果为:
青青子衿,悠悠我心。
纵我不往,子宁不嗣音?
青青子佩,悠悠我思。
纵我不往,子宁不来?
挑兮达兮,在城阙兮。
一日不见,如三月兮。
'''
传入参数
只读取文件内容的5个字符。
f=open('./example.txt','r',encoding='utf-8')
text=f.read(5)
print(text)
f.close()
'''
输出结果为:
青青子衿,
'''
- readline()
使用readline()方法读取文件内容的第一行。
示例:
f=open('./example.txt','r',encoding='utf-8')
text=f.readline()
print(text)
f.close()
'''
输出结果为:
青青子衿,悠悠我心。
'''
- readlines()
读取文件内容的所有行。
示例:
f=open('./example.txt','r',encoding='utf-8')
text=f.readlines()
print(text)
f.close()
'''
输出结果为:
['青青子衿,悠悠我心。\n', '纵我不往,子宁不嗣音?\n',
'青青子佩,悠悠我思。\n', '纵我不往,子宁不来?\n',
'挑兮达兮,在城阙兮。\n', '一日不见,如三月兮。\n']
'''
写入文件
- write():将指定字符串内容写入文件。
- writelines():将字符串列表逐行写入文件。
write()方法将字符串写入文件时不会自动添加换行符,而writelines()方法会保留列表中每个元素的换行符。
- write()
写入两个字符串。
示例:
f=open('./example.txt','w',encoding='utf-8')
f.write('一个荔子\n')
f.write('两个荔子')
f.close()
'''
文件内容结果为:
一个荔子
两个荔子
'''
- writelines()
写入字符串列表。
示例:
f=open('./example.txt','w',encoding='utf-8')
lines=['line1\n','line2','line3']
f.writelines(lines)
f.close()
'''
文件内容结果为:
line1
line2line3
'''
关闭文件
关闭文件是一个重要的操作,可以释放资源并确保文件的完整性。
可以使用close()方法关闭文件对象。
示例:
f=open('./example.txt','w+',encoding='utf-8')
f.write('hello')
f.close() #关闭文件
可以使用with() 语句来打开文件,with语句会在代码块执行结束后自动关闭文件。
示例:
with open('./example.txt','r') as f:
print(f.read())
#自动关闭文件
总结
通过以上操作,你可以实现对文件的基本读写操作。同时,还有其他方法可用于读取文件的部分内容、逐行读取文件、复制和移动文件等高级文件操作。
在进行文件操作时,也要注意文件的编码方式和异常处理,以确保正确读取和写入数据,并避免潜在的错误。