码迷,mamicode.com
首页 > 其他好文 > 详细

文件处理

时间:2019-07-08 21:00:02      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:imp   函数   trunc   str   修改文件   space   mode   修改   while   

r+,w+,a+

with open (ra,r+,encoding = utf-8) as f:
    print(f.readable())  #判断可读 True
    print(f.writable())  # 判断可写 True
    print(f.readline())  # 读取第一行内容
    f.write(嘿嘿)  # 将字符串添加到文件中
with open (ra,w+,encoding = utf-8) as f:
    print(f.readable())  #判断可读 True
    print(f.writable())  # 判断可写 True
    print(f.readline())  #读取内容为空
f.write(
嘿嘿) # 将字符串添加到文件中
with open(ra,mode=r+b) as f:
    print(f.readable())  #判断可读 True
    print(f.writable())  # 判断可写 True
    res = f.read()  #返回的是二进制数
    print(res)  # b‘\xe5\x98\xbf\xe5\x98\xbf\r\n\xe5\x93\x88\xe5\x93\x88\r\n\xe5\x93\x88\xe5\x96\xbd‘
    print(res.decode(utf-8))  # 返回的是文件内容
    res1 = str(res,encoding=utf-8)
    print(res1)  # 返回的是文件内容

在rt模式下,read内的数字,表示的是字节个数

with open(ra,rb) as f:
    res = f.read(9)  # 读的是三个字节bytes
    print(res)  # 读取的是二进制数b‘\xe5\x98\xbf\xe5\x98\xbf\xe5\xbe\x88‘
    print(res.decode(utf-8))  # 打印的是三个字符
f.seek(offset,whence)
offset:相对偏移量  光标移动的位数
whence:
    0:参照文件的开头   t和b都可以使用
    1:参照光标所在的当前位置  只能在b模式下用
    2:参照文件的末尾  只能在b模式下使用
with open(ra,rt,encoding=utf-8) as f:
    print(f.read(1))  # 读取文件中的第一个字
    f.seek(6,0)  # 0是将光标放到文件的开头,6是将光标移动6个字节
    print(f.read(1))  # 读取一个字符
    f.seek(0,0)  # 将光标放到文件开头,不移动光标
    print(f.read())  # 将光标之后的字符都读取出来
with open(ra,rb) as f:
print(f.read(6).decode(‘utf-8‘)) # 读取六个字节 f.seek(
9,1) # 光标在当前读取的位置,然后移动9个字符 print(f.read(1).decode(utf-8)) # 读取一个字节
with open(rD:\python_workspace\day8文件处理\a,rb) as f:
    f.seek(0,2)  # 将光标移动到文件末尾
    while True:
        res = f.readline()
        if res:
            print("新增的文件内容:%s" % res.decode(utf-8))
with open(ra,a,encoding=utf-8) as f:
    f.truncate(3)  # 接收的字节长度 整形
# 修改文件
# 先将数据由硬盘读到内存(读文件)
# 在内存中完成修改(字符串的替换)
# 在覆盖原来的内容(写文件)
with open (rD:\python_workspace\day8文件处理\test.txt,r,encoding = utf-8) as f:
    data = f.read()
    print(data)
    print(type(data))

with open (rD:\python_workspace\day8文件处理\test.txt,w,encoding = utf-8) as f:
    res = data.replace(哈喽,摩拜)
    print(data)
    f.write(res)

优点:任意时间硬盘上只有一个文件,不会占用过多的硬盘空间

缺点:当文件过大的时候,可能造成内存溢出

# 创建一个新文件
# 循环读取老文件内容到内存进行修改,将修改好的内容写到新文件中
# 将老文件删除 将新文件的名改成老文件名
import os
with open (rD:\python_workspace\day8文件处理\test.txt,r,encoding = utf-8) as read_f,    open (rD:\python_workspace\day8文件处理\test.swap,a,encoding = utf-8) as write_f:
    for line in read_f:
        new_line = line.replace(哈喽,摩拜)
        write_f.write(new_line)
os.remove(test.txt)
os.rename(test.swap,test.txt)

优点:内存中始终只有一行内容,不占空间

缺点:在某一时刻,硬盘上会同时存在两个文件

 

函数

def test():
    函数体
print(test())

可以通过变量名找到变量对应的值

可以通过函数名+括号  找到函数体所对应的代码并执行

函数名的命名规则跟变量名一样

函数就是工具,并且函数必须先定义后调用(函数名+括号)

 

文件处理

标签:imp   函数   trunc   str   修改文件   space   mode   修改   while   

原文地址:https://www.cnblogs.com/zrh-960906/p/11153781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!