Python(三十五)python文件操作(2)

简介: 5:文件指针操作函数 tell() seek()(1):tell()判断文件指针当前所处的位置lua复制代码f = open("log.txt", 'r', encoding="utf-8") print(f.tell()) print(f.read(10)) print(f.tell())输出:arduino复制代码0https://gu10 (2):seek()将文件指针移动至指定位置语法:bash复制代码file.seek(offset[, whence])其中,各个参数的含义如下:file:表示文件对象;whence:作为可选参数,用于指定文

2:read()  readline() 和 readlines() 函数

log.txt文件内容:

arduino

复制代码

时间里的
https://guanchao.site

(1):read() 函数:逐个字节或者字符读取文件中的内容;

正常使用:

ini

复制代码

#以 utf-8 的编码格式打开指定文件
f = open("log.txt", encoding = "utf-8")
#输出读取到的数据
print(f.read())
#关闭文件
f.close()

输出:

arduino

arduino

复制代码

时间里的
https://guanchao.site

 

使用 size 参数,指定 read() 每次可读取的最大字符(或者字节)数,例如:

ini

复制代码

#以 utf-8 的编码格式打开指定文件
f = open("log.txt",encoding = "utf-8")
#输出读取到的数据
print(f.read(4))
#关闭文件
f.close()

输出:

复制代码

时间里的

 

读取二进制打开的文件内容:

lua

复制代码

#以二进制形式打开指定文件,该文件编码格式为 utf-8
f = open("log.txt",'rb+')
byt = f.read()
print(byt)
print("\n转换后:")
print(byt.decode('utf-8'))
#关闭文件
f.close()

输出:

less

复制代码

b'\xe6\x97\xb6\xe9\x97\xb4\xe9\x87\x8c\xe7\x9a\x84\r\nhttps://guanchao.site'

 

转换后:

arduino

复制代码

时间里的
https://guanchao.site

 

(2):readline() 函数:逐行读取文件中的内容;

readline() 函数用于读取文件中的一行,包含最后的换行符“\n”

ini

复制代码

f = open("log.txt",encoding = "utf-8")
# 读取一行数据
byt = f.readline()
print(byt)

输出:

复制代码

时间里的

 

在逐行读取时,还可以限制最多可以读取的字符(字节)数,例如:

ini

复制代码

#以二进制形式打开指定文件
f = open("log.txt",'rb')
# 指定读取字节数
byt = f.readline(4)
print(byt)

输出:

bash

复制代码

b'\xe6\x97\xb6\xe9'

 

(3):readlines() 函数:一次性读取文件中多行内容。

readlines() 函数用于读取文件中的所有行,它和调用不指定 size 参数的 read() 函数类似,只不过该函数返回是一个字符串列表,其中每个元素为文件中的一行内容。

ini

复制代码

f = open("log.txt",'rb')
byt = f.readlines()
print(byt)

输出:

css

复制代码

[b'\xe6\x97\xb6\xe9\x97\xb4\xe9\x87\x8c\xe7\x9a\x84\r\n', b'https://guanchao.site']

 

3:write()和writelines():向文件中写入数据

在使用 write() 向文件中写入数据,需保证使用 open() 函数是以 r+、w、w+、a 或 a+ 的模式打开文件,否则执行 write() 函数会抛出 io.UnsupportedOperation 错误。

(1):wtite()

lua

复制代码

f = open("log.txt", 'a', encoding="utf-8")
 f.write("\n写入一行新数据")
 f.close()
 f = open("log.txt", encoding="utf-8")
 aa = f.read()
 print(aa)
 f.close()

输出:

arduino

复制代码

时间里的
https://guanchao.site
写入一行新数据

 

写入文件完成后,一定要调用 close() 函数将打开的文件关闭,否则写入的内容不会保存到文件中。例如,将上面程序中最后一行 f.close() 删掉,再次运行此程序并打开 log.txt,你会发现该文件是空的。这是因为,当我们在写入文件内容时,操作系统不会立刻把数据写入磁盘,而是先缓存起来,只有调用 close() 函数时,操作系统才会保证把没有写入的数据全部写入磁盘文件中。这个很重要  要注意

但是,在完成文件操作后,我不想使用close关闭文件就像读取到他的内容该怎么操作呢?

Python为我们提供了flush函数,它可以实现将缓冲区的数据写入文件中。

lua

复制代码

f = open("log.txt", 'a', encoding="utf-8")
 f.write("\n写入一行新数据flush")
 f.flush()

打开文件,我们可以看到:

arduino

复制代码

时间里的
 https://guanchao.site
 写入一行新数据
 写入一行新数据flush

有的同学可能会想到,通过设置 open() 函数的 buffering 参数可以关闭缓冲区,这样数据不就可以直接写入文件中了?对于以二进制格式打开的文件,可以不使用缓冲区,写入的数据会直接进入磁盘文件;但对于以文本格式打开的文件,必须使用缓冲区,否则 Python 解释器会 ValueError 错误。例如:

lua

复制代码

f = open("log.txt", 'w',buffering = 0)
 f.write("写入一行新数据---关闭缓冲区之后")

输出:

arduino

复制代码

Traceback (most recent call last):
  File "F:/camellia/python/testProject/main.py", line 63, in <module>
    import ospath
  File "F:\camellia\python\testProject\ospath.py", line 70, in <module>
    f = open("log.txt", 'w',buffering = 0)
ValueError: can't have unbuffered text I/O

 

(2):writelines()

writelines() 函数,可以实现将字符串列表写入文件中。

ini

复制代码

f = open('log.txt', 'r', encoding="utf-8")
 n = open('log1.txt','w+', encoding="utf-8")
 n.writelines(f.readlines())
 n.close()
 f.close()

打开log1.txt:

arduino

复制代码

时间里的
 https://guanchao.site
 写入一行新数据
 写入一行新数据flush

4:close() 关闭文件

Python的文件操作中,使用open创建/打开之后,必须使用close关闭。否则在某些操作的时候会报错:

lua

复制代码

import os
 # 打开 / 创建文件
 f = open("log.txt",'w')
 # 删除文件
 os.remove("log.txt")

输出报错:

arduino

复制代码

Traceback (most recent call last):
  File "F:/camellia/python/testProject/main.py", line 63, in <module>
    import ospath
  File "F:\camellia\python\testProject\ospath.py", line 83, in <module>
    os.remove("log.txt")
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'log.txt'
目录
相关文章
|
3月前
|
监控 Java 数据处理
文件操作不再难!Python系统编程实战,带你轻松驾驭文件系统与I/O
【7月更文挑战第31天】在 Python 系统编程中, 文件操作与 I/O 管理至关重要。
53 2
|
4月前
|
开发者 Python
Python基础第七篇(Python的文件操作)
Python基础第七篇(Python的文件操作)
|
27天前
|
存储 Python
Python文件操作
Python文件操作
|
28天前
|
存储 安全 Python
30天拿下Python之文件操作
30天拿下Python之文件操作
31 1
|
4月前
|
存储 安全 开发者
文件操作?Python让你轻松搞定!
【6月更文挑战第12天】Python编程中的文件操作至关重要,涉及数据存储和系统交互。通过内置的`open()`函数,开发者可轻松处理文件。以只读模式`&#39;r&#39;`为例,使用`with`语句打开并读取文件内容;写入文件则用`&#39;w&#39;`或`&#39;a&#39;`模式。文件对象还支持高级功能,如文件指针移动,允许随机访问。掌握这些技能能提升开发效率。
31 0
|
17天前
|
Java 程序员 Python
【Python】文件操作
【Python】文件操作
17 0
|
1月前
|
监控 安全 Java
文件操作不再难!Python系统编程实战,带你轻松驾驭文件系统与I/O
【9月更文挑战第13天】在Python系统编程中,文件操作与I/O管理至关重要。本文通过五个实战案例分享最佳实践:高效遍历文件系统、优雅处理文件读写、利用缓冲机制优化性能、并行处理文件加速任务以及异常处理确保程序稳健。使用pathlib、上下文管理器及concurrent.futures等工具,助你轻松掌握Python文件系统与I/O操作,提升编程效率和项目质量。 示例代码展示了如何使用pathlib遍历目录、with语句安全读写文件、控制缓冲区大小、并行处理多个文件以及捕获异常保证程序稳定运行。通过这些技巧,你将能够在实际项目中更加高效地管理和操作文件。
43 6
|
2月前
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
26 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
|
2月前
|
安全 Python
python文件操作详解
整个文件操作过程中,我们应始终保持代码的健壮性和清晰性,确保在出现错误时资源能够被正确释放。
42 1
|
2月前
|
安全 Python
Python文件操作全面指南
【8月更文挑战第4天】Python是一种强大的编程语言,支持丰富的文件操作功能。本文全面介绍了Python文件操作,包括读取、写入、追加及关闭文件等基本操作,并演示了如何处理异常以增强程序的健壮性。此外,还深入探讨了使用`os`和`shutil`模块进行高级文件与目录管理的方法,以及如何运用上下文管理器自动管理文件资源,为读者提供了实用的代码示例和最佳实践。
56 5