python3 文件读写操作

如何在Python读写文件?
四部曲:
open文件
read文件

write文件
close文件

例子:
如何打开children文件并且显示

data=open('children') #指向要打开的文件
f=data.read() #读取文件内容,并且赋值给f
print(f) #打印文件
data.close() #关闭文件,相当于归还内存

文件打开默认是只读权限,但是我们在打开文件的时候可以追加其他权限,例如读写

data=open('children','r+',encoding='utf-8')
f=data.read()
print(f)
print(data.readable()) #查看data这个文件是否可读
print(data.writable())  #查看data这个文件是否可写
data.close()

运行结果:

hello word

True

True

逐行读取文件内容

利用for循环去读取

data=open('children','r',encoding='utf-8')
for i in range(1,5):
    f=data.readline()
    print("打印第%d 行:" %i,f)

运行结果:
打印第1 行: my name is children

打印第2 行: come from beihai

打印第3 行: like bie

打印第4 行: chenchaozhen

如果不用for循环的话,只能一行行写

data=open('children','r',encoding='utf-8')
f=data.readline()
print("第一行",f)
f=data.readline()
print("第二行",f)
f=data.readline()
print("第三行",f)
f=data.readline()
print("第四行",f)
f=data.readline()
print("第五行",f)
data.close()

运行结果:
打印第1 行: my name is children

打印第2 行: come from beihai

打印第3 行: like bie

打印第4 行: 陈朝振

注意readline是读取一行,而readlines则是读取全部并且以列表的形式保存

data=open('children','r',encoding='utf-8')
print(data.readlines()) #readlines 是读取所有行 成一个列表形式

运行结果:

['1\n', '2\n', '2\n', '3\n', '4\n', '5\n']

为什么会有个\n呢?

因为Windows平台换行符就是\n

如何将指定的内容写入文件?

在open文件的时候赋予w权限即可

data=open('children','w',encoding='utf-8') #写模式
data.write("11112222") #
data.close()

##注意w权限是重新创建一个同名文件,然后覆盖源文件

##其实文件的修改可以理解为覆盖,用新的内容去覆盖旧的内容

跟readlines一样,writelines也是一样的,只不过一个是读 一个是写

data=open('children','w',encoding='utf-8') 
data.writelines("11112222\n") #逐行写入
data.writelines("11112222\n")#不会覆盖上一行,相当于列表写入
data.writelines("1223123")
data.close()

还可以这样写入:

data=open('children','w',encoding='utf-8')
data.writelines(['chen chao zhen \n','xu zhen zhi \n']) #所以如果要写入多行,可以以列表形式写入
data.close()

#但是要注意,列表插入的形式最后要加入一个\n 

#追加模式,不会清空源文件,内容追加到文件最后

data=open('children','a',encoding='utf-8') #追加模式
data.writelines(['chen chao zhen \n','xu zhen zhi \n'])
data.close()

文件没有修改这么一说,只有覆盖
r 读模式
w 写模式(重新创建一个空的同名文件)
a 追加模式(写入内容追加到文件的最后一行)
r+ 读写模式(写入内容会从文件开头覆盖,并不是创建空的同名文件)
w+ 写读模式(重新创建一个空的同名文件)
a+ 追加读写模式(跟a模式一样)

1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数

apple 10 3
tesla 100000 1
mac 3000 2
lenovo 30000 3
chicken 10 3

在文件打开还有一个关键字with

with open('children','r+') as name:
    print(name.readlines())

打开文件并且创建变量指向文件,可以一步完成

with open("a.txt",'r') as much:
    res=[]
    res1=[]
    for line in much:
        res.append(line)
    for i in range(0,5):
        a=int(res[i].split()[1])
        b=int(res[i].split()[2])
        res1.append(a*b)
    print(sum(res1))

运行结果:
196040

猜你喜欢

转载自www.cnblogs.com/children92/p/9210331.html