欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python基础学习5

程序员文章站 2022-07-14 23:10:29
...

在python下,

  1. 读模式(r)只可以读,不可以写
  2. 写模式(w)只可以写,不可以读,写的时候,若文件不存在,则会创建一个,若存在会清除该文件下内容,并将新的内容写进去
  3. 追加append(a)也可以进行写操作,不在不影响源文件的基础上进行写操作,同样的也是不可以读的
    f=open('春晓','r',encoding='utf8')
    data=f.read()
    data=f.read(5)
    print(data)
    f.close()
    f=open('春晓2','w',encoding='utf8')
    data=f.write("hello world")
    f.close()
    f=open('春晓','a',encoding='utf8')
    data=f.write("\nhello world\n")
    data=f.write("nihao")
    f.close()

对文件操作流程

  1. 打开文件,得到文件句柄(对象)并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

close关闭操作,在“程序执行完毕后”进行关闭,在程序结尾处写上,会直接执行(没写不安全),若是没有写,python机制可以对其关闭

    import time
    f=open('春晓','a',encoding='utf8')
    #print(f.fileno())#文件描述符 是区别不同文件的标志
    data=f.write("\nhello world\n")
    data=f.write("nihao")
    time.sleep(50) #上面的内容没有直接写到磁盘中,而是现在缓冲区中,在程序执行完毕后才写入,
                #所以在50秒之后才会在相应的文件中有结果
    f.close()
在此期间,可以同时通过不同的.py程序对目标文件进行读操作,写操作

readline:读取一行的内容,包括换行符,在同一个文件中进行第二次操作会继续读取下一行
相邻的readline读出内容之间各一行原因是:readline会读取改行最后面的换行符,导致换行,同时print有一个默认换行的操作,所以又换了一行,另一个readline读出的内容就会在该行
readlines:通过行读取指定文件的所有内容,并组成列表
tell:此方法可以查找光标的位置,对于英文来说:一个英文默认是1个字符,而对于中文来说:一个中文默认是3个字符
seek:可以调整光标的位置

    f=open('春晓','r',encoding='utf8')
    print(f.tell())#0
    f.read(2)
    print(f.tell())#6
    print(f.read(4))#不觉晓,

    f.seek(0)
    print(f.read(4))#春眠不觉

flush:可以随时将内存中缓存的数据更新到磁盘中。(一般进度条的读取可以使用)
truncate:截取文件中的内容,对append(a)方式是有意义的,因为此方式不会清空文件中的内容,而对于w写方式是
无意义的,因为在截取之前会清空文件中的内容
f.truncate(5) 截取5个字符之前的内容,后面的清空
r+:读写模式
w+:写读模式 会先清空文件中的内容,然后可以进行写操作,注意:在写之后若是进行读操作的话,注意光标的问题
a+:追加读模式 因为追加所以光标在最后,读的话会读不出来,需要进行光标的调整

内存的存储机制就决定着写数据只能在最后写,不可以在中间插入,所以不可以写操作

f=open('春晓','r',encoding='utf8')
number=0
for i in f:
    number+=1
    if number==3:
        f.write("qwe")

不可以在第三行处添加,这两是不同的机制,所以可以先将文件总内容读取到内存上,在读取的过程中可以在指定的部分添加内容,再将读取到内存上的内容写到另一个文件中
补充:

with open('春晓','r') as f:
    ...

和上面的读操作一样,此方法可以不用手写f.close,with下面的代码段执行完毕后,会自动关闭

    #with同时管理多个文件对象
    with open("春晓",'r') as f1,open("春晓2",'w') as f2 :
        ...

可以同时对多个文件进行操作

相关标签: python基础学习5