Python 基础第8天(文件管理)

今天主要内容

文件操作相关命令

1.什么是文件操作

通过python的相关方法,对文件内的数据进行读,写,追加的操作,并且通过更改编码方式等操作方便查看内容.

方式:

f = open('路径,''编码类型','操作')

f:变量,f_obj,file,f_handler,...文件操作专有名词:文件句柄

open windows的系统功能

路径为(1)绝对路径(2)相对路径

编码类型:windows默认编码方式:gbk,linux默认编码方式utf-8 (encoding)

操作:对要打开的文件进行操作,打开文件,生成文件句柄,然后对文件句柄进行操作,mode = ''

执行动作(打开方式):只读,只写,追加,读写,写读....

 

例:

 

f = open('F:练习1.txt',encoding='gbk',mode='r')
jd = f.read()
print(jd)
f.close()

mode =  'r', 'rb', 'r+', 'r+b'

五种只读的方式:

f = open('F:练习1.txt',encoding='gbk',mode='r')
jd = f.read()
print(jd)
f.close()

f.read() :全部读到内存中

 

f = open('F:练习1.txt',encoding='gbk',mode='r')
print(f.readline())

print(f.readline())

print(f.readline())

print(f.readline())
f.close()

f.readline():根据文件内的换行符,一行一行读出来

 

f = open('F:练习1.txt',encoding='gbk',mode='r')
print(f.readlines())
f.close()

f.readlines():将原文件的每一行作为一个列表元素,放到list中

 

f = open('F:练习1.txt',encoding='gbk',mode='r')
print(f.read(4))
f.close()

f = open('F:练习1.txt',encoding='gbk',mode='rb')
print(f.read(4))
f.close()

f.read(n):读取一部分

# 在r模式下,read(n)按照字符去读取。

# 在rb模式下,read(n)按照字节去读取。

 


f = open('log',encoding='utf-8')
for i in f:
print(i.strip())
f.close()

5.循环读取数据,

即将文件句柄f看做是一个可迭代的对象,使用for进行循环内部是元素.文件内部以换行符进行行的分割.

 

=========================================================

(1)r,只读。
#文件以什么编码方式存储的,就以什么编码方式打开。

(2)rb,只读,以bytes类型读取。

#非文字类的文件时,用rb,省略encoding类型

 

(3)r+ 先读,后追加 一定要先读后写,否则程序出错

错误的操作:

(4) r+b :用bytes形式,对文件进行先读后写的操作

例:

写操作:

(1)w :没有文件,创建一个文件写入内容,有文件,将原文件内容清空,在写入内容

 

(2)wb:用法与rb相似

 

 (3)w+ 先写后读。

(4)w+b 用bytes方式对文件进行先写后读操作

追加

(1)a 没有文件,创建一个文件追加内容,有文件,直接追加内容

(2)ab 以bytes方式对文件进行追加操作

 (3)a+  追加读,先写入文件,然后在读出来

(4)a+b   bytes形式的a+ 追加读,先写入文件,然后在读出来

 

 其他用法:

f.writable #是否可写

f.truncate()  #按字节对源文件进行截取,如果不填字节数,则显示文件内总共在设置的编码下有多少字节.

 

 

例:  根据截取添加内容,使用truncate方法,后面输入字节数,在这个字节数后面添加新内容.

 f.tell()  按字节去读光标位置,当前光标所在位置为末尾.()内容为字节数.

f.seek() 按照字节调整光标位置,显示后面还能符合字符标准的字符显示出来

 f.readable() 检查是否可读

with语句:

**with open() as f:

  print(f.read())

功能: 1.自动关闭文件句柄   2.一次性可以操作多个文件句柄

 

此例题展示了如何进行系统中的文件修改.

例1

import os

with open('log',encoding='utf-8') as f1,
open('log.bak',encoding='utf-8',mode='w') as f2:
content = f1.read()
new_content = content.replace('alex','SB')
f2.write(new_content)
os.remove('log')
os.rename('log.bak','log')

例2:

import os
with open('log',encoding='utf-8') as f1,
open('log.bak',encoding='utf-8',mode='w') as f2:
for i in f1:
new_i = i.replace('SB','alex')
f2.write(new_i)
os.remove('log')
os.rename('log.bak','log')

 

 

 

 

原文地址:https://www.cnblogs.com/tom2ling/p/8659911.html