>  기사  >  백엔드 개발  >  Python의 파일 작업

Python의 파일 작업

高洛峰
高洛峰원래의
2017-02-27 17:02:161285검색

1. 메서드를 호출할 수 있는 개체는 값, 문자열, 목록, 튜플, 사전, 심지어 파일과 같은 개체여야 합니다.

 str1 = 'hello'
 str2 = 'world'
 str3 = ' '.join([str1,str2])
 print(str3)

2. 세 가지 기본 파일 작동 모드: r(읽기 전용), w(쓰기 전용), a(추가)

파일 조작 과정:

먼저 파일 객체를 생성합니다.

둘째, 작업할 파일 메소드를 호출합니다.

셋째, 파일을 닫는 것도 잊지 마세요. (파일이 닫히지 않으면 내용은 캐시에 저장됩니다. Python은 마지막에 자동으로 내용을 디스크로 읽지만 만약을 대비해 파일을 닫는 습관을 길러야 합니다)

파일 file1

一张褪色的照片,
好像带给我一点点怀念。
巷尾老爷爷卖的热汤面,
味道弥漫过旧旧的后院;
流浪猫睡熟在摇晃秋千,
夕阳照了一遍他咪着眼;
那张同桌寄的明信片,
安静的躺在课桌的里面。

(1)r 모드

읽기 전용 모드에서 콘텐츠를 쓰면 오류가 보고됩니다.

아아아아

아아아아

아아아아

아아아아

(2)w 모드

작업 전에 파일의 모든 내용이 지워집니다. 예를 들어 file1에 'hello world'라고 적으면 프로그램이 실행된 후 file1에는 'hello world'라는 문장만 남게 됩니다

 f = open('file1','r')
 f_read = f.read()   #read是逐字符地读取,read可以指定参数,设定需要读取多少字符,无论一个英文字母还是一个汉字都是一个字符。
 print(f_read)
 f.close()

(3) a 모드

w 모드와 다르게 a 모드는 원본 내용을 지우지 않고 커서를 내용의 마지막 위치로 이동시킨 후 계속해서 새로운 내용을 작성하는 모드입니다. 예를 들어 파일을 인쇄하려면

 f = open('file1','r')
 f_read = f.readline() #readline只能读取第一行代码,原理是读取到第一个换行符就停止。
 print(f_read)
 f.close()

끝에 'hello world'를 추가하고, '그네에서 곤히 자고 있는 길고양이' 뒤에 'helloworld'를 추가하면 됩니다. to 출력

r 모드에서는 파일 내용을 출력하기 위해 for 루프와 readlines()를 사용한다고 말했습니다. 이 출력 내용의 원리는 파일을 열고, 전체 내용을 메모리로 읽고, 그런 다음 입력을 인쇄합니다. 파일이 큰 경우 이 읽기 방법은 신뢰할 수 없으며 시스템이 충돌할 수도 있습니다. 다음과 같이 제때에 파일을 닫아야 합니다.

 f = open('file1','r')
 f_read = f.readlines() #readlines会把内容以列表的形式输出。
 print(f_read)
 f.close()

빅 데이터 파일의 경우 다음 방법을 사용하세요.

 f = open('file1','r')
 for line in f.readlines() #使用for循环可以把内容按字符串输出。
   print(line) #输出一行内容输出一个空行,一行内容一行空格... 因为文件中每行内容后面都有一个换行符,而且print()语句本身就可以换行,如果不想输出空行,就需要使用下面的语句:print(line.strip())
 f.close()

3.tell andeek

tell: 파일의 커서 위치 쿼리

eek: 커서 위치 지정

 f = open('file1','w',encoding='utf8')  #由于Python3的默认编码方式是Unicode,所以在写入文件的时候需要调用utf8,以utf8的方式保存,这时pycharm(默认编码方式是utf8)才能正确读取,当读取文件时,文件是utf8格式,pycharm也是utf8,就不需要调用了。
 f_w = f.write('hello world')
 print(f_w)  #有意思的是,这里并不打印'hello world',只打印写入多少字符
 f.close()

4.flush는 캐시에서 디스크로 데이터를 동기적으로 전송합니다

진행률 표시줄 기능 구현 예

 f = open('file1','a')
 f_a = f.write('hello world')
 print(f_a) #还是会打印写入的字符数
 f.close()

5.truncate truncate

는 r 모드에서 실행할 수 없습니다.

w 모드에서는 모든 데이터가 지워집니다.

a 모드에서는 truncate를 사용할 필요가 없습니다. , 지정된 위치 뒤의 내용이 잘립니다.

f = open('file','r')
data=f.readlines()  #注意及时关闭文件
f.close()

num = 0
for i in data:
  num += 1
  if num == 5:
    i = ''.join([i.strip(),'hello world']) #不要使用“+”进行拼接
  print(i.strip())
f.close()

6. 커서 위치 요약

한자는 2바이트이며, 커서 위치와 관련된 4가지 방법이 있습니다. 말하고, 찾고, 자릅니다.

num = 0
f.close()  #不要过早关闭文件,否则程序不能识别操作句柄f.
f = open('file','r')
for i in f:  #for内部把f变为一个迭代器,用一行取一行。
  num += 1
  if num == 5:
    i = ''.join([i.strip(),'hello world'])
  print(i.strip())
f.close()

7. 다른 3가지 모드: r+, w+, a+

r+: 읽기 및 쓰기 모드, 커서가 시작 위치에 있음 기본적으로 위치, 쓰기가 필요한 경우 커서가 자동으로 끝으로 이동합니다

w+: 쓰기 및 읽기 모드, 먼저 원본 내용을 지운 다음 쓰기, 읽을 수도 있습니다

a+: 읽기 모드 추가, 커서 기본값은 마지막 위치로 직접 쓸 수도 있고 읽을 수도 있습니다.

f = open('file','r')
print(f.tell())  #光标默认在起始位置
f.seek(10)    #把光标定位到第10个字符之后
print(f.tell())  #输出10
f.close()
----------------------
f = open('file','w')
print(f.tell())  #先清空内容,光标回到0位置
f.seek(10)    
print(f.tell())
f.close()
----------------------
f = open('file','a')
print(f.tell())  #光标默认在最后位置
f.write('你好 世界')
print(f.tell())  #光标向后9个字符,仍在最后位置
f.close()

8. 파일 내용 수정

아이디어: 데이터 저장 메커니즘으로 인해 파일의 내용만 읽을 수 있습니다. 수정하고 파일 2에 넣으세요.

import sys,time  #导入sys和time模块
for i in range(40):
  sys.stdout.write('*')
  sys.stdout.flush()  #flush的作用相当于照相,拍一张冲洗一张
  time.sleep(0.2)
下面代码也能够实现相同的功能
import time 
for i in range(40):
  print('*',end='',flush=True) #print中的flush参数
  time.sleep(0.2)

9. with 문

은 with 코드 블록이 실행될 때 동시에 여러 파일에서 작동할 수 있습니다. 메모리 자원을 해제하기 위해 특별히 f.close()를 추가할 필요는 없습니다. 다음 예제를 통해 with의 사용법과 이점을 경험해 보겠습니다.

with 문을 사용하여 8의 코드를 다시 작성하세요


 f = open('file','a')
 f.truncate(6) #只显示6个字节的内容(6个英文字符或三个汉字),后面的内容被清空。

10. 🎜>위 내용은 이 글의 전체 내용입니다. 모든 분들께 도움이 되었으면 좋겠습니다. 질문이 있으시면 메시지를 남겨주세요

Python의 파일 작업과 관련된 더 많은 기사를 보려면 PHP 중국어 웹 사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.