파일은 일부 저장소를 저장하여 다음에 프로그램을 실행할 때 새 복사본을 만들지 않고도 직접 사용할 수 있어 시간과 노력을 절약하는 것입니다.
Python에는 파일을 읽고 쓸 수 있는 open() 메서드가 내장되어 있습니다.
open() 메소드를 사용하여 파일을 조작하는 것은 코끼리를 냉장고에 넣는 것과 같습니다. 파일을 여는 단계, 파일을 조작하는 단계, 세 번째 단계로 나눌 수 있습니다. 파일을 닫습니다.
open() 메서드의 반환 값은 변수(파일 핸들)에 할당할 수 있는 파일 객체입니다.
기본 구문 형식은 다음과 같습니다.
f = open(filename, mode)
참고:
Python에서는 읽기 및 쓰기 메서드가 있는 모든 개체를 파일 형식으로 분류할 수 있습니다. 모든 파일 형식 개체는 open 메서드를 사용하여 열 수 있고 close 메서드로 끝납니다.
filename: 액세스하려는 파일 이름(일반적으로 파일 경로)이 포함된 문자열 값입니다.
mode: 파일을 여는 데는 다양한 모드가 있으며 기본값은 읽기 전용 모드 r입니다.
예:
# 打开一个文件 f = open("1.txt", "w") f.write("Python 是一种非常好的语言。\nPython!!\n") # 关闭打开的文件 f.close()
실행 결과:
1.txt 파일에 작성 Python은 매우 좋은 언어입니다. 파이썬.
표를 사용하여 Python에서 일반적으로 사용되는 읽기 및 쓰기 모드를 이해하세요
액세스 모드 | 설명 |
---|---|
r | 읽기 전용 모드의 파일입니다. 파일 포인터는 파일의 시작 부분에 배치됩니다. (기본 모드). |
w | 쓰기 전용 파일을 엽니다. 파일이 이미 있으면 덮어씁니다. 파일이 없으면 새 파일을 만듭니다. |
a | 추가할 파일을 엽니다. 파일이 이미 존재하는 경우 파일 포인터는 파일 끝에 배치됩니다. 즉, 기존 콘텐츠 다음에 새로운 콘텐츠가 작성됩니다. 파일이 없으면 쓰기용 새 파일을 만듭니다. |
rb | 읽기 전용으로 바이너리 형식의 파일을 엽니다. 파일 포인터는 파일의 시작 부분에 배치됩니다. 이것이 기본 모드입니다. |
wb | 쓰기 전용으로 바이너리 형식의 파일을 엽니다. 파일이 이미 있으면 덮어씁니다. 파일이 없으면 새 파일을 만듭니다. |
ab | 추가를 위해 바이너리 형식의 파일을 엽니다. 파일이 이미 존재하는 경우 파일 포인터는 파일 끝에 배치됩니다. 즉, 기존 콘텐츠 다음에 새로운 콘텐츠가 작성됩니다. 파일이 없으면 쓰기용 새 파일을 만듭니다. |
r+ | 읽고 쓰기 위한 파일을 엽니다. 파일 포인터는 파일의 시작 부분에 배치됩니다. |
w+ | 파일을 열어서 읽고 쓸 수 있습니다. 파일이 이미 있으면 덮어씁니다.파일이 없으면 새 파일을 만듭니다. |
a+ | 읽고 쓰기 위한 파일을 엽니다. 파일이 이미 존재하는 경우 파일 포인터는 파일 끝에 배치됩니다. 파일은 추가 모드로 열립니다. 파일이 존재하지 않으면 읽기 및 쓰기를 위해 새 파일이 생성됩니다. |
rb+ | 읽고 쓰기 위해 바이너리 형식의 파일을 엽니다. 파일 포인터는 파일의 시작 부분에 배치됩니다. |
wb+ | 읽고 쓰기 위해 바이너리 형식의 파일을 엽니다. 파일이 이미 있으면 덮어씁니다. 파일이 없으면 새 파일을 만듭니다. |
ab+ | 추가를 위해 바이너리 형식의 파일을 엽니다. 파일이 이미 존재하는 경우 파일 포인터는 파일 끝에 배치됩니다. 파일이 존재하지 않으면 읽기 및 쓰기를 위해 새 파일이 생성됩니다. |
如果要读取非UTF-8编码的文件,需要给open()函数传入encoding参数。
例如,读取GBK编码的文件:
>>> f = open('gbk.txt', 'r', encoding='gbk') >>> f.read() 'GBK' #编码
遇到有些编码不规范的文件,可能会抛出UnicodeDecodeError
异常,这表示在文件中可能夹杂了一些非法编码的字符。遇到这种情况,可以提供errors参数,表示如果遇到编码错误后如何处理。
f = open('gbk.txt', 'r', encoding='gbk', errors='ignore')
用open方法打开一个文件,将返回一个文件对象。这个对象内置了很多操作方法。
下面打开了一个f文件对象(1.txt)。对文件对象进行相关的操作。
读取一定大小的数据, 然后作为字符串或字节对象返回。size是一个可选的数字类型的参数,用于指定读取的数据量。当size被忽略了或者为负值,那么该文件的所有内容都将被读取并且返回。
f = open("1.txt", "r") str = f.read() print(str) f.close()
如果文件体积较大,请不要使用read()方法一次性读入内存,而是read(312)这种一点一点的读。
从文件中读取一行n内容。换行符为'\n'。如果返回一个空字符串,说明已经已经读取到最后一行。这种方法,通常是读一行,处理一行的情况下使用。
f = open("1.txt", "r") str = f.readline() print(str) f.close()
将文件中所有的行,一行一行全部读入一个列表内,按顺序一个一个作为列表的元素,并返回这个列表。readlines方法会一次性将文件全部读入内存,所以也存在一定的弊端。但是它有个好处,每行都保存在列表里,可随意存取。
f = open("1.txt", "r") a = f.readlines() print(a) f.close()
实际情况中,我们会将文件对象作为一个迭代器来使用。
# 打开一个文件 f = open("1.txt", "r") for line in f: print(line, end='') # 关闭打开的文件 f.close()
这个方法很简单, 不需要将文件一次性读出,但是同样没有提供一个很好的控制,与readline方法一样只能前进,不能回退。
几种不同的读取和遍历文件的方法比较:
如果文件很小,read()一次性读取最方便;
如果不能确定文件大小,反复调用read(size)比较保险;
如果是配置文件,调用readlines()最方便。普通情况,使用for循环更好,速度更快。
使用write()可以完成向文件写入数据。
# 打开一个文件 f = open("/tmp/foo.txt", "w") f.write("Python 是一种非常好的语言。\n我喜欢Python!!\n") # 关闭打开的文件 f.close()
返回文件读写指针当前所处的位置,它是从文件开头开始算起的字节数。一定要注意了,是字节数,不是字符数。
如果要改变位置指针的位置, 可以使用f.seek(offset, from_what)
方法。seek()经常和tell()方法配合使用。
from_what的值,如果是0表示从文件开头计算,如果是1表示从文件读写指针的当前位置开始计算,2表示从文件的结尾开始计算,默认为0,例如:
offset:表示偏移量。
seek(x,0) :从起始位置即文件首行首字符开始移动 x 个字符。
seek(x,1) :表示从当前位置往后移动x个字符。
seek(-x,2):表示从文件的结尾往前移动x个字符。
例:
f = open("1.txt", "rb+") f.write(b"1232312adsfalafds") print(f.tell()) print(f.seek(5)) print(f.read(1)) print(f.seek(-3, 2))
print(f.read(1))
运行结果:
关闭文件对象。当处理完一个文件后,调用f.close()来关闭文件并释放系统的资源。文件关闭后,如果尝试再次调用该文件对象,则会抛出异常。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了,或者更糟糕的结果。
with关键字用于Python的上下文管理器机制。为了防止open这一类文件打开方法,在操作过程出现异常或错误,或者最后忘了执行close方法,文件非正常关闭等可能导致文件泄露、破坏的问题。
Python提供了with这个上下文管理器机制,保证文件会被正常关闭。不需要再写close语句。注意缩进。
with open('test.txt', 'w') as f: f.write('Hello, world!')
with支持同时打开多个文件(文件都是随机创建的):
with open('1') as obj1, open('2','w') as obj2: s=obj1.read() obj2.write(s)
本文基于Python基础,使用Python语言。介绍了有关Python文件操作的知识点,从文件的基本概念入手 ,通过一个个小项目的演示,对常用的读写模式,文件对象操作方法,以及在实际应用中需要注意的问题,都做了详细的讲解。希望帮助你更好的学习Python。
위 내용은 의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!