Python의 파일 작업 관련 내용 요약(예제 포함)

不言
풀어 주다: 2018-10-29 17:37:07
앞으로
2556명이 탐색했습니다.

이 기사는 Python의 파일 작업에 대한 관련 내용을 예제와 함께 요약한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 파일 작업 소개

파일 작업에 있어서는 모두 스트림을 통해 수행된다고 생각합니다. 스트림. 파이썬에서 파일의 연산은 매우 간단합니다. 다양한 스트림 연산을 갖는 Java와 같은 다른 언어와 달리, open 함수를 직접 사용하여 파일을 연 다음, 여는 방식에 따라 다양한 연산을 수행할 수 있습니다. , 수행할 수 있는 작업도 다릅니다. 파일을 여는 방법은 다음과 같습니다. w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 등

먼저 파일 읽기 작업을 살펴보겠습니다.

In [2]: f = open(file='a.txt', mode='r', encoding='utf-8')

In [3]: f.read()
Out[3]: '每天坚持一点,\n每天努力一点,\n每天多思考一点,\n慢慢你会发现,\n你的进步越来越大\n'
In [4]:
로그인 후 복사

open 함수를 사용하여 파일을 열고 파일 객체를 반환합니다(필수). 작업의 파일 이름), 모드(열 모드) 및 인코딩(파일을 읽을 인코딩 지정)은 모드에 따라 반환된 파일에 다양한 작업이 수행됩니다. 파일에 대한 몇 가지 작업을 살펴보겠습니다.

2. 여러 가지 파일 작업 방법

(1) 읽기 전용 작업

읽기 전용 작업 only 모드를 r로 지정해야 합니다:

In [5]: f = open(file='a.txt', mode='r', encoding='utf-8')
 
In [6]: f.read()
Out[6]: '每天坚持一点,\n每天努力一点,\n每天多思考一点,\n慢慢你会发现,\n你的进步越来越大\n'
 
In [7]: f.readable()                # 判断文件是否可读
Out[7]: True
 
In [8]: f.writable()                # 判断文件是否可写
Out[8]: False                       # 此处是以只读模式打开的文件,所以返回False不可写
 
In [9]: f1 = open(file='单分支结构.eddx', mode='rb')        # 使用‘rb’可以打开存储为二进制的数据,图片、视频等
 
In [10]: f1.read(20)
Out[10]: b'PK\x03\x04\x14\x00\x08\x00\x08\x00mN\xe3H\xa9\x95\xb3\x9eW\x01'
로그인 후 복사

(2) 쓰기 전용 작업

mode='w'

                                                                             
In [13]: f = open(file='a.txt', mode='w', encoding='utf-8')                  
                                                                             
In [14]: f.read()                       # 此时尝试读取文件会报错                                            
---------------------------------------------------------------------------  
UnsupportedOperation                      Traceback (most recent call last)  
<ipython-input-14-571e9fb02258> in <module>                                  
----> 1 f.read()                                                             
                                                                             
UnsupportedOperation: not readable                                           
                                                                             
In [15]: f.write(&#39;葫芦娃&#39;)                                                      
Out[15]: 3                                                                   
                                                                             
In [16]: f.close()                                                           
                                                                             
In [17]: !cat a.txt                     # 此时查看文件之前那的内容已经被覆盖了                             
葫芦娃                                                                          
In [18]:
로그인 후 복사

Use mode= 'w '파일을 조작할 때 파일을 열면 먼저 파일이 지워지고, 그 다음 조작에 따라 내용이 파일에 기록됩니다.

# 🎜🎜#
  • 파일이 존재하지 않을 때 파일이 자동으로 생성된 후 해당 파일이 열려 작업됩니다

  • #🎜 🎜#파일을 열면 파일의 내용이 먼저 지워진 후 처음부터 작성됩니다
  • # 🎜🎜#

    파일이 쓰기 전용 모드로 열리고, 읽을 수 없습니다
  • (3) 추가 작업
  • #🎜🎜 #mode='a'
In [18]: f = open(file=&#39;a.txt&#39;, mode=&#39;a&#39;, encoding=&#39;utf-8&#39;)
 
In [19]: f.write(&#39;每天坚持一点,\n每天努力一点,\n每天多思考一点,\n慢慢你会发现,\n你的进步越来越大\n&#39;)
Out[19]: 42
 
In [20]: f.close()
 
In [21]:
 
In [21]: !cat a.txt
葫芦娃每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大
 
In [22]:
로그인 후 복사

추가 모드 작업:

파일을 열 때 파일이 없으면 먼저 생성됩니다#🎜 🎜#

  • 글을 쓸 때

    은 커서가 어디에 있든 항상 파일 끝에

    을 씁니다.
  • # 🎜🎜#

    열린 파일은 #Mode는 읽기 및 쓰기가 가능한 향상된 읽기 작업입니다.

    In [22]: f = open(file=&#39;a.txt&#39;, mode=&#39;r+&#39;, encoding=&#39;utf-8&#39;)
    
    In [23]: f.readable()
    Out[23]: True
    
    In [24]: f.writable()
    Out[24]: True
    
    In [25]: f.read()
    Out[25]: &#39;葫芦娃每天坚持一点,\n每天努力一点,\n每天多思考一点,\n慢慢你会发现,\n你的进步越来越大\n&#39;
    
    In [26]: f.write(&#39;\n哈哈哈哈哈哈哈&#39;)
    Out[26]: 8
    
    In [27]: f.close()
    
    In [28]: !cat a.txt         # 查看写入的文件并没有异常
    葫芦娃每天坚持一点,
    每天努力一点,
    每天多思考一点,
    慢慢你会发现,
    你的进步越来越大
    
    哈哈哈哈哈哈哈
    In [29]: f = open(file=&#39;a.txt&#39;, mode=&#39;r+&#39;, encoding=&#39;utf-8&#39;)
    
    In [30]: f.seek(0, 2)       # seek可以调整光标位置
    Out[30]: 153
    
    In [31]: f.write(&#39;你的进步越来越大&#39;)
    Out[31]: 8
    
    In [32]: f.read()           # 先写后读会读出空字符
    Out[32]: &#39;&#39;
    
    In [33]:
    로그인 후 복사
    Summary: 향상된 읽기 작업은 파일을 읽고 쓸 수 있지만 순서는 읽기여야 합니다. 먼저 읽고 쓴 다음 빈 문자열을 읽을 수 있습니다.

  • r+ 모드에서 내용을 읽어보세요. 읽은 내용에 관계없이 커서로 표시되는 내용입니다. 파일을 쓰거나 조작할 때 마지막에 작업이 수행됩니다.

  • (5) w+ 및 a+ 모드#🎜🎜 #
w+ 모드와 a+ 모드는 실제 사용 시나리오가 적습니다. 다음은 간략한 소개입니다.

r+w+: 향상된 w 모드 , 쓰기 및 읽기 작업이 가능하지만 r+와 동일합니다. 먼저 읽고 쓴 다음 함정이 있으며 파일을 열 때마다 파일이 먼저 지워지기 때문에 사용 시나리오가 적습니다.

#🎜🎜 #

a+: 향상된 a 모드에서는 읽기 및 쓰기 작업도 수행할 수 있지만, 파일 끝에만 쓸 수 있습니다.

어떻게든. 커서가 움직이면 파일끝까지만 쓸 수 있습니다.

3. 🎜🎜#

(1) 파일 읽기 및 쓰기
  • 파일 쓰기

    : 주로 write 방식과 writelines 방식
  • write 메서드: 문자열을 직접 작성합니다.

writelines 메서드는 위의 예에서도 사용됩니다. 전달된 매개변수는 반복 가능해야 합니다. (예: 목록 및 튜플 등)

파일 읽기

:

read 메서드: read 메서드 한 번에 읽는 문자 수를 나타내는 int 유형 매개변수를 받습니다(탐색 단위는 바이트). 제공되지 않으면 기본값은 #🎜 파일의 모든 내용을 읽는 것입니다. 🎜#
  • readline 방법: 파일의 한 줄을 읽는 방법은 파일이 매우 클 때 매우 유용합니다. 목록을 나열하고 목록을 반환합니다

  • In [34]: f = open(file=&#39;a.txt&#39;, mode=&#39;r&#39;, encoding=&#39;utf-8&#39;)
    # 葫芦娃每天坚持一点,
    # 每天努力一点,
    # 每天多思考一点,
    # 慢慢你会发现,
    # 你的进步越来越大
     
    # 哈哈哈哈哈哈哈你的进步越来越大
    In [35]: f.read(10)                 # 这里时一次读取10个字符
    Out[35]: &#39;葫芦娃每天坚持一点,&#39;
     
    In [36]: f.readline()
    Out[36]: &#39;\n&#39;
     
    In [37]: f.readline()               # 每次读取一行
    Out[37]: &#39;每天努力一点,\n&#39;
     
    In [38]: f.readlines()              # 返回的是一个列表
    Out[38]: [&#39;每天多思考一点,\n&#39;, &#39;慢慢你会发现,\n&#39;, &#39;你的进步越来越大\n&#39;, &#39;\n&#39;, &#39;哈哈哈哈哈哈哈你的进步越来越大&#39;]
     
    In [39]:
    로그인 후 복사

    readline(파일 핸들)과 readline의 차이점

  • 파일 핸들은 반복 가능한 객체입니다. 한 줄 루프 중에 순회할 때마다 가져오며 파일을 읽을 때 한 번에 모두 읽히지 않습니다.

readlines 반환된 결과는 목록이며 전체 파일의 내용은 다음과 같습니다. 한 번에 읽기 목록을 반환하면 대용량 파일을 처리할 때 리소스가 많이 소모됩니다 루프를 사용하여 파일 핸들을 순회하고 파일 내용을 출력할 수도 있습니다. #🎜 🎜#

In [39]: f.seek(0)
Out[39]: 0

In [40]: for line in f:
    ...:     print(line.strip())
葫芦娃每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大

哈哈哈哈哈哈哈你的进步越来越大

In [41]:
로그인 후 복사

(2) 다른 파일 조작 방법
  • close: 파일 닫기
  • #🎜 🎜#읽기 가능: 파일을 읽을 수 있는지 확인#🎜 🎜#

  • seek: 커서를 이동하고 두 개의 데이터를 받습니다. 첫 번째 매개변수는 오프셋 위치를 나타냅니다(이동 단위는 바이트입니다. 그래서 UTF-8의 중간 부분이라면) 3의 배수라면 두 번째 매개변수는 해당 위치로부터의 오프셋을 나타냅니다(0은 시작 위치, 1은 현재 위치, 2는 끝 위치) #🎜 🎜#
  • seekable:判断当前文件的光标是否可移动

  • tell:返回当前光标所在的位置

  • truncate:截断数据(谨慎操作),默认截断光标后所有字符

  • writable:判断文件是否可写

(3)打开文件的另一种方式

在打开一个文件后,要记得在文件使用结束狗使用close方法关闭文件句柄,但有时在中间进行大量的操作后可能会忘了关闭,下面介绍的这种方法可以不用自己手动关闭文件了,他会在您操作解说后(代码块的语句执行完毕)自动关闭文件句柄,这种方法就是使用context上下文管理,使用with语句实现:

In [43]: with open(&#39;a.txt&#39;, mode=&#39;r&#39;, encoding=&#39;utf-8&#39;) as f:   # 使用with管理上下文,最后退出时会自己执行close动作
    ...:     for line in f:
    ...:         print(line.strip())
葫芦娃每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大
哈哈哈哈哈哈哈你的进步越来越大
로그인 후 복사

위 내용은 Python의 파일 작업 관련 내용 요약(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿