python文件操作的一般步骤_4.1Python文件基本操作

Python文件基本操作

文件的读写方法有六种:W,R,A,W+,A+,R+

读模式:

# -*-coding:utf-8 -*-

__author__ = 'xiaojiaxin'

__file_name__ = 'file1'

import time

#文件操作三步走:1.创建;2.操作;3.关闭文件

#文件操作六种模式:r(读模式),w(覆盖写模式),a(追加写模式),r+,w+.a+

f=open('小重山',mode='r',encoding='utf=8') #创建一个文件

r1=f.read() #进行相应的操作

print(r1)

f.close() #关闭文件,将缓存区的数据存入磁盘,如果不自己关,python可以关,但是不可靠

#输出:

# 昨夜寒蛩不住鸣。

# 惊回千里梦,已三更。

# 起来独自绕阶行。

# 人悄悄,帘外月胧明。

# 白首为功名,旧山松竹老,阻归程。

# 欲将心事付瑶琴。

# 知音少,弦断有谁听。

写模式:

f1=open('小重山2',mode='w',encoding='utf-8') #创建文件的时候文件里面内容全部清空

w1=f1.write("wahaha")

print(w1)

f1.fileno()

w2=f1.write("123\n")

print(w2)

time.sleep(50) #放在内存里50秒

f1.close() #关闭文件,将缓存区的数据存入磁盘

#输出:wahaha123 没有空格,没有换行

追加模式a

f2=open("小重山2",mode='a',encoding="utf-8")

a1=f2.write("一二三")

print(a1)

f2.close() #关闭文件,将缓存区的数据存入磁盘

R+模式:

特点:r+模式该怎么读就怎么读,写只能在最后写

# -*-coding:utf-8 -*-

__author__ = 'xiaojiaxin'

__file_name__ = 'rjia_wjia_ajia'

#+模式 R+ w+ a+

#r+模式该怎么读就怎么读,写只能在最后写

f1=open("小重山",mode="r+",encoding="utf-8")

print(f1.readline())

#输出昨夜寒蛩不住鸣。

f1.write("123") #123写到了最末尾

f1.close()

# 昨夜寒蛩不住鸣。

# 惊回千里梦,已三更。

# 起来独自绕阶行。

# 人悄悄,帘外月胧明。

# 白首为功名,旧山松竹老,阻归程。

# 欲将心事付瑶琴。

# 知音少,弦断有谁听。123

W+模式

特点:创建即覆盖清空,光标在开头

#w+

f2=open("小重山2",mode="w+",encoding="utf-8")

print(f2.tell()) #0 因为写模式一创建就清空原有的文件

print(f2.readline()) # 表示读不了

print(f2.tell()) #0

f2.write("123") #123写到了最末尾

print(f2.tell()) #光标在3字节上

f2.seek(0) #把指针移到0位置

print(f2.readline()) #输出123

f2.close()

a+模式

特点:光标在结尾,追加写,读数据需要用seek将指针光标移至前面

#a+

f3=open("小重山3",mode="a+",encoding="utf-8")

print(f3.tell()) #222 光标在结尾处

print(f3.readline()) # 表示读不了

print(f3.tell()) #222

f3.write("123") #123写到了最末尾

print(f3.tell()) #225 光标在结尾处

f3.seek(0) #把指针移到0位置

print(f3.readline()) #输出123

f3.close()

实例:R、R+模式不能修改数据问题:

#final:r 、r+模式不能在中间写或修改数据,只能在最后追加写!不能修改原有的数据

f4=open("小重山4",mode="r+",encoding="utf=8")

counter1=0

for line in f4:

counter1+=1

if counter1==3: #希望在第三行加入别的数据

#line=''.join([line.strip(),'i like it!'])

f4.write("123")

f4.close()

# 昨夜寒蛩不住鸣。

# 惊回千里梦,已三更。

# 起来独自绕阶行。

# 人悄悄,帘外月胧明。

# 白首为功名,旧山松竹老,阻归程。

# 欲将心事付瑶琴。

# 知音少,弦断有谁听。123

怎么解决r+模式不能修改原文件问题:重新建一个文件,不停的拷贝到新文件,进行修改处理

实例: r+模式不能修改原文件的解决办法

# -*-coding:utf-8 -*-

__author__ = 'xiaojiaxin'

__file_name__ = 'modifyfile_inr+'

#把f1的数据写进f2,并且修改第三行数据,加上"i add it "

counter1=0

f2=open("小重山2",mode="w",encoding="utf-8")#小重山是完整的诗

f1=open("小重山",mode="r+",encoding="utf-8")#小重山2为空

for i in f1:

j=i

counter1+=1

if counter1==3:

j=''.join([j.strip(),"i add it",'\n'])

f2.write(j)

print(j)

f1.close()

f2.close()

读操作:

# -*-coding:utf-8 -*-

__author__ = 'xiaojiaxin'

__file_name__ = 'file2'

f=open("小重山",mode="r",encoding="utf-8")

readline1=f.readline() #默认打印出换行符

print(readline1)

# 昨夜寒蛩不住鸣。

#

readline2=f.readline()

print(readline2)

# 惊回千里梦,已三更。

#

print(f.read(5)) #读出5个字符

# 起来独自绕

print(f.readlines(4))

#['阶行。\n', '人悄悄,帘外月胧明。\n']

print(f.readlines()) #变成列表

#['白首为功名,旧山松竹老,阻归程。\n', '欲将心事付瑶琴。\n', '知音少,弦断有谁听。']

f.close()

# 输出:

# 昨夜寒蛩不住鸣。

#

# 惊回千里梦,已三更。

#

# 起来独自绕

#['阶行。\n', '人悄悄,帘外月胧明。\n', '白首为功名,旧山松竹老,阻归程。\n', '欲将心事付瑶琴。\n', '知音少,弦

文件遍历

f2=open("小重山",mode="r",encoding="utf-8")

for i in f2.readlines():

print(i.strip()) #strip去掉字符串首尾的空格

# 昨夜寒蛩不住鸣。

# 惊回千里梦,已三更。

# 起来独自绕阶行。

# 人悄悄,帘外月胧明。

# 白首为功名,旧山松竹老,阻归程。

# 欲将心事付瑶琴。

# 知音少,弦断有谁听。

f2.close()

添加需求:在诗的第六行加一个字符串

#在诗的第六行加一个字符串:

f3=open("小重山",mode="r",encoding="utf-8")

counter=0

for i in f3.readlines():

counter+=1

if counter==6:

i=''.join([i.strip(),"i like it!"]) #尽量不用+,用join方法做字符串拼接

print(i.strip())

f3.close()

# 昨夜寒蛩不住鸣。

# 惊回千里梦,已三更。

# 起来独自绕阶行。

# 人悄悄,帘外月胧明。

# 白首为功名,旧山松竹老,阻归程。

# 欲将心事付瑶琴。i like it!

# 知音少,弦断有谁听。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值