python之文件操纵

分享
程序员 2024-9-10 03:00:38 177 0 来自 中国
1 创建

Python 使用 open() 函数创建或打开文件,语法格式如下所示:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)参数阐明如下所示:
file:表现将要打开的文件的路径,也可以是要被封装的整数范例文件形貌符。
mode:是一个可选字符串,用于指定打开文件的模式,默认值是 'r'(以文本模式打开并读取)。
可选模式如下:

1.png
buffering:是一个可选的整数,用于设置缓冲战略。
encoding:用于解码或编码文件的编码的名称。
errors:是一个可选的字符串,用于指定如那边理编码息争码错误(不能在二进制模式下使用)。
newline:区分换行符。
closefd:假如 closefd 为 False 而且给出了文件形貌符而不是文件名,那么当文件关闭时,底层文件形貌符将保持打开状态;假如给出文件名,closefd 为 True (默认值),否则将引发错误。
opener:可以通过转达可调用的 opener 来使用自界说开启器。
以 txt 格式文件为例,通过代码方式来创建,如下所示:
open('test.txt', mode='w',encoding='utf-8')实行完上述代码,就为我们创建好了 test.txt 文件。
2 写入

上面我们创建的文件 test.txt 没有任何内容,我们向这个文件中写入一些信息,对于写操纵,Python 文件对象提供了两个函数,如下所示:

2.png
使用这两个函数向文件中写入一些信息,如下所示:
wf = open('test.txt', 'w', encoding='utf-8')wf.write('Tom\n')wf.writelines(['Hello\n', 'Python'])# 关闭wf.close()上面我们使用了close() 函数举行关闭操纵,假如打开的文件忘记了关闭,大概会对程序造成一些隐患,为了制止这个题目标出现,可以使用 with as 语句,通过这种方式,程序实行完成后会主动关闭已经打开的文件。如下所示:
with open('test.txt', 'w', encoding='utf-8') as wf:    wf.write('Tom\n')    wf.writelines(['Hello\n', 'Python'])3 读取

对于文件的读操纵,Python 文件对象提供了三个函数,如下所示:

3.png
我们使用上面三个函数读取一下之前写入的内容,如下所示:
with open('test.txt', 'r', encoding='utf-8') as rf:    print('readline-->', rf.readline())    print('read-->', rf.read(6))    print('readlines-->', rf.readlines())4 定位

Python 提供了两个与文件对象位置相关的函数,如下所示:


下面通过示例对上述函数作进一步了解,如下所示:
with open('test.txt', 'rb+') as f:    f.write(b'123456789')    # 文件对象位置    print(f.tell())    # 移动到文件的第四个字节    f.seek(3)    # 读取一个字节,文件对象向后移动一位    print(f.read(1))    print(f.tell())    # 移动到倒数第二个字节    f.seek(-2, 2)    print(f.tell())    print(f.read(1))5 其他

除了上面那些函数,Python 文件对象尚有一些其他方法,如:isatty() 和 truncate()。
举例阐明一下,如下所示:
with open('test.txt', 'r+') as f:    # 检测文件对象是否毗连到终端装备    print(f.isatty())    # 截取两个字节    f.truncate(2)    print(f.read())参考文档所在:
https://docs.python.org/zh-cn/3.7/library/index.html
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2025-3-11 06:26, Processed in 0.177771 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表