首页 > 代码库 > 文件处理

文件处理

碎碎念:自私是共同获益的原动力

问题:代理两难
代理两难出现在,委托-代理模式中,委托者有所有权,代理者有经营权。矛盾点出现在双方都觉得收益应该归自己。
再有就是“荆棘效应”,代理者做的越好,委托者第二年越会提高指标。代理者最优选择是想办法降低委托者的预期,即使会损失市场

解决方法:激励相容
对于创业公司,委托者面对风险,所以要求代理者(总经理)必须购买10%的股份,核心团队买15%,这样对于能干的人,肯定不怕出钱。
对于母公司,要求出资50%,母公司高管也出资25%,不投立即开除。因为母公司和子公司会有业务往来,用到母公司资源。

激励相容,就是承认人性的自私,用正确的机制,让“自私”,而不是“集体主义精神”,成为大家共同获益的原动力



文件的操作
本质就是把文件内存对象读取到一个变量里,f就是那个变量,之后再对文件进行操作,如read,readline等
f = open("lyrics",encoding=utf-8)     #读取文件内存对象

 

基本方法

f.read()  #读取文件内容,将文件内容都读取到内存中
f.readline()   #读取文件一行信息
f.readlines()   #读取所有行,用列表展示出来,一行为一个元素

 

for index,line in enumerate(f.readlines()):     #读取前5行(注意,效率低!不建议使用)
    if index < 5:
        print(line)
    else:
        break

f = open("myfile",w,encoding=utf-8)     #创建写模式,会覆盖原有文件,不能读取文件
f.write("我爱北京")
f.close()

 

追加
f = open("myfile",a,encoding=utf-8)     #追加模式,不会覆盖原有文件,不能读取文件
f.write("我爱北京")
f.close()

 



其他操作
print(f.closed)        #判断文件是否关闭,在操作文件前,可以先判断一下文件是否关闭

print(f.encoding)       #判断文件字符编码

f.flush()       #强制写入到硬盘中

f.name      #打印文件名

f.isatty()     #判断是否为设备文件

f.seek(10)   #把光标向后移动10个字符

f.tell()       #打印光标位置

f.truncate()     #截断,用r+模式打开,主要用于二进制文件的截断,例如做断点续传

 

关于读写的混合模式
#读写——如果读了,那就从最底下一行追加;如果没读,则从头读取,并覆盖原有文件
f = open("myfile",r+)
print(f.readline())
f.write("insert\n")
f.close()


#写读——等同于w,没有意义
f = open("myfile",w+)

#追加读——和a效果一样,没有意义
f = open("myfile",a+)
print(f.readline())
f.write("insert\n")
f.close()

 

常用姿势汇总!!!!
常用姿势汇总!!!!
常用姿势汇总!!!!

读一行
f.readline().strip()   #将一行的空格和换行去掉

读取前5行,方法一
f = open("lyrics",encoding=utf-8)
for i in range(5):          #读取前5行,注:一行行的读取
    print(f.readline().strip())
f.close()

 

读取前5行,方法二
f = open("lyrics",encoding=utf-8)
line_nu = 0                   #读取前5行,注:一行行的读取
for line in f:
    if line_nu < 5:
        print(line.strip())
        line_nu += 1
f.close()


#费硬盘的修改方式
f = open("lyrics",r,encoding="utf-8")
f2 = open("lyrics_new",w,encoding="utf-8")
find_str = "夜晚的"
new_str = "白天的寒冷的"
for line in f:
    if find_str in line:
        line = line.replace(find_str,new_str)
    f2.write(line)
f.close()
f2.close()

#费内存的修改方式
f = open("lyrics",encoding="utf-8")
content = f.readlines()
f.close()
find_str = "夜晚的"
new_str = "白天的寒冷的"
f = open("lyrics",w,encoding="utf-8")
for line in content:
    if find_str in line:
        line = line.replace(find_str,new_str)
    f.write(line)
f.close()

 

文件处理