文件(File)
通过Python程序来对计算机中的各种文件进行增删改查的操作
I/O(Input / Output)
操作文件的步骤:
- 打开文件
- 对文件进行各种操作(读、写),然后保存
- 关闭文件
打开文件
file_name = 'demo.txt' file_obj = open(file_name) print(file_obj)
提示:此处输出的是文件对象的信息。
使用 with … as 语句打开文件
file_name = 'hello' try: with open(file_name) as file_obj : print(file_obj.read()) except FileNotFoundError: print(f'{file_name} 文件不存在~~')
提示:with … as 语句可以在代码块结束时自动关闭文件。
读取文件内容
file_name = 'demo2.txt' try: with open(file_name, encoding='utf-8') as file_obj: content = file_obj.read() print(content) except FileNotFoundError: print(f'{file_name} 这个文件不存在!') # 或者逐行读取文件内容 file_name = 'demo.txt' try: with open(file_name, encoding='utf-8') as file_obj: for line in file_obj: print(line) except FileNotFoundError: print(f'{file_name} 这个文件不存在!')
读取大文件的方式
file_name = 'demo.txt' try: with open(file_name, encoding='utf-8') as file_obj: file_content = '' chunk = 100 while True: content = file_obj.read(chunk) if not content: break file_content += content except FileNotFoundError: print(f'{file_name} 这个文件不存在!') print(file_content)
提示:对于较大的文件,使用循环读取内容,避免一次读取全部内容导致内存泄漏。
逐行读取和读取全部行
import pprint import os file_name = 'demo.txt' with open(file_name, encoding='utf-8') as file_obj: for line in file_obj: print(line)
或者使用 readline()
和 readlines()
方法:
with open(file_name, encoding='utf-8') as file_obj: print(file_obj.readline(), end='') print(file_obj.readline()) print(file_obj.readline()) # 或者 with open(file_name, encoding='utf-8') as file_obj: r = file_obj.readlines() pprint.pprint(r[0]) pprint.pprint(r[1]) pprint.pprint(r[2])
写文件操作
首先我们需要使用 open()
函数打开一个文件并进行操作,之后用 write()
方法向文件中写入内容。
file_name = 'demo5.txt' with open(file_name , 'x' , encoding='utf-8') as file_obj: file_obj.write('aaa\n') file_obj.write('bbb\n') file_obj.write('ccc\n') r = file_obj.write(str(123)+'123123\n') r = file_obj.write('今天天气真不错') print(r)
文件定位
seek()
seek()
函数用于修改文件读取位置,需要两个参数:
- 要切换到的位置
- 计算该位置的方式
该函数有三种计算位置方式:
- 0 从头计算,默认值
- 1 从当前位置计算
- 2 从最后位置开始计算
with open('demo2.txt','rt' , encoding='utf-8') as file_obj: file_obj.seek(9) print(file_obj.read()) print('当前读取到了 -->',file_obj.tell())
tell()
使用 tell()
函数查看当前读取的位置。
with open('demo2.txt','rt' , encoding='utf-8') as file_obj: file_obj.seek(9) print(file_obj.read()) print('当前读取到了 -->',file_obj.tell())
关闭文件
关闭文件是非常重要的操作,它可以释放操作系统资源并确保文件在使用完毕后被正确关闭。
在 Python 中有几种关闭文件的方法:
- 使用
close()
方法:可以直接调用文件对象的close()
方法来关闭文件。
f = open('filename.txt') # 使用文件对象进行读写操作 f.close() # 关闭文件
- 使用
with
语句:with
语句会在代码块执行完毕后自动关闭文件,即使发生异常也会正常关闭文件。
with open('filename.txt') as f: # 使用文件对象进行读写操作 # 不需要手动调用 close() 方法来关闭文件
无论使用哪种方式,关闭文件都是一个良好的编程习惯。这样可以避免文件句柄泄漏和资源浪费。
另外,还有一些需要注意的事项:
- 在使用
with
语句时,不需要手动调用close()
方法关闭文件。 - 在使用
close()
方法关闭文件时,要确保在文件操作完成后再关闭文件,避免在文件操作期间关闭文件导致错误。 - 如果在文件操作期间发生了异常,并且没有正确处理或关闭文件,那么可能会出现文件未关闭的情况。因此,使用
with
语句能更好地处理这种情况。 - 出于性能考虑,Python 解释器在某些情况下可能会延迟关闭文件。但是,为了保持良好的编程习惯,我们应该始终在使用完文件后主动关闭它们。
总之,关闭文件是一种好的编程习惯,可以确保文件和系统资源的正确释放。建议在代码中始终养成关闭文件的习惯,特别是当文件操作较为复杂或需要长时间打开文件时。
文件管理
使用 os
模块可以进行文件和目录的管理操作。
获取目录结构
使用 os.listdir()
函数获取指定目录下的目录结构。
import os r = os.listdir() print(r)
获取当前目录
使用 os.getcwd()
函数获取当前所在的目录。
import os r = os.getcwd() print(r)
切换当前所在目录
使用 os.chdir()
函数切换当前所在目录,相当于 cd
命令。
import os os.chdir('c:/') r = os.getcwd() print(r)
创建目录
使用 os.mkdir()
函数在指定路径下创建新的目录。
import os os.mkdir("aaa")
删除目录
使用 os.rmdir()
函数删除指定路径下的空目录。
import os os.rmdir('abc')
删除文件
使用 os.remove()
函数删除指定路径下的文件。
os.remove('aa.txt')
重命名文件
使用 os.rename()
函数重命名指定路径下的文件或移动文件。
os.rename('aa.txt','bb.txt') os.rename('bb.txt','c:/users/lilichao/desktop/bb.txt')
总结
本文介绍了Python中文件的操作和管理。首先,我们学习了如何打开文件,包括使用open()
函数和with ... as
语句打开文件,在操作完成后正确关闭文件是一个良好的编程习惯。然后,我们讨论了如何读取文件的内容,包括读取整个文件和逐行读取文件。对于大型文件,我们介绍了一种逐块读取文件的方式以避免内存问题。接下来,我们学习了如何进行文件的写操作,包括写入新文件和追加内容到已有文件。我们还研究了文件定位的两个重要方法:seek()
和tell()
,它们可以用来控制和获取文件当前的位置。在文件管理方面,我们了解了如何获取目录结构、获取当前目录、切换当前目录、创建目录、删除目录以及删除和重命名文件。这些文件操作和管理的知识对于日常的文件处理任务非常重要,也是程序员必备的技能。
通过学习本文,读者可以掌握文件操作和管理的基本技巧,能够安全地读取和写入文件,并且能够进行简单的文件和目录管理操作。这将为日常的文件处理需求提供帮助,并提升代码的可读性和可维护性。同时,了解文件操作和管理的基本原理,可以为进一步学习更高级的文件操作和管理技术打下坚实的基础。让我们在Python编程中更加熟练地处理文件!
本文到此结束,谢谢观看!