首页 > 代码库 > 文件操作

文件操作

文件操作:

1、读取文件的相关参数:

1open()  ##打开一个文件的函数

 file = open(‘file1‘,encoding=‘utf8‘) //打开一个文件,指点编码为utf8,并赋值给一个变量
 data = http://www.mamicode.com/file.read() // read读取文件内容,将内容赋值给一个变量>

结果:

 技术分享

2close() ##关闭一个文件的函数,例子同上

3read()  ##读取文件内容,例子同上

4readable()  ##判断文件是否可读

file = open(‘file1‘,encoding=‘utf8‘)
data  = http://www.mamicode.com/file.readable()   //判断文件是否可读> 

结果:

 技术分享

5readline()  ##每次只读取文件的一行内容

file = open(‘file1‘,encoding=‘utf8‘)
data = http://www.mamicode.com/file.readline()  //读取一行并空行隔开,如果不想有空行,在输出内容的时候加一个end=‘‘> 

结果:

技术分享

print(data,end=‘‘)  // 去掉空行
print(data1)

结果:

 技术分享

6readlines()  ##把文件内容都读取出来,输出为列表的形式

file = open(‘file1‘,encoding=‘utf8‘)
data = http://www.mamicode.com/file.readlines() // 读取全部数据> 

结果:

技术分享

2、写文件的相关参数:

1w参数:

file = open(‘file1‘,‘w‘,encoding=‘utf8‘) // 加个w就表示在执行写操作
data = http://www.mamicode.com/file.read()  //在写的过程中去读取文件,会报错,并且会清空整个文件>

 结果:

 技术分享

ps:如果文件不存在,直接打开并关闭则会创建一个新的文件

2write() ##写操作,直接把要写的内容放在括号里

file = open(‘file1‘,‘w‘,encoding=‘utf8‘)
file.write(‘11111\n22222\n33333\n‘)
file.close() 

 结果:

   技术分享

3writable()  ##判断一个文件是否可写

file = open(‘file1‘,‘w‘,encoding=‘utf8‘)
file.writable()  
print(data)
file.close()

 结果:

技术分享

4writelines() ##用列表的形式写入内容

file = open(‘file1‘,‘w‘,encoding=‘utf8‘)
file.writelines([‘xyyyyyyp\n‘,‘dadasda\n‘])
file.close()

结果:

技术分享

5a参数:

file = open(‘file1‘,‘a‘,encoding=‘utf8‘)
file.write(‘\n倒数第二行\n倒数第一行‘)
file.close() 

结果:

技术分享

修改文件的终极方法:

with open(‘file1‘,‘r‘,encoding=‘utf8‘) as file,        open(‘file1‘,‘w‘,encoding=‘utf8‘) as file11:
    data = http://www.mamicode.com/file.readlines()>

使用with的方法打开一个文件,不用在最后面加上一个file.close,以便操作过多忘记

3、其他参数:

(1)r+  可读可写:

with open(‘file1‘,‘r+‘,encoding=‘utf8‘) as f:
    print(f.read())
    f.write(‘\nhello‘)

读结果:

 技术分享

写结果:

 技术分享

2w+  可读可写:

with open(‘file1‘,‘w+‘,encoding=‘utf8‘) as f:
    print(f.read())
    f.write(‘hello‘)

 读结果:

 技术分享

 写结果:

技术分享

(3)a+ 可读可写:

with open(‘file1‘,‘a+‘,encoding=‘utf8‘) as f:
     print(f.read())
     f.seek(2)   //指定光标在什么位置
     f.write(‘\tworld‘)

读结果和w+的一样

写结果:

技术分享

4)总结:

a、重要记住:r  w  a

br+w+a+的区别:

    r+:是先读在写,写的时候会在文件后面追加内容

    w+:是先把文件内容整个替换掉,然后在写入新的内容

    a+:和r+的意思是一样的,这里在有seek()的情况下,不管光标在什么位置,   都是在文件的后面追加内容

案例1 输入指定内容加载所需要信息

    

while True:  //循环整个操作
    test = input(‘please enter url: ‘).strip()  //交互模式
    l = []   //定义空列表
    flag = False   //标志位
    with open(‘haproxy.conf‘,encoding=‘utf8‘) as f: //读取文件

         for line in f:  //循环遍历整个文件
            if line.startswith(‘backend‘) and test in line:  //对所需要的内容进行判断
               flag = True   //标志位判断
               continue     //退出当前操作
            if line.startswith(‘backend‘) and flag:  //对不需要的内容进行判断
               break  //退出整个操作
            if flag:
               l.append(line.strip())   //将筛选出来的内容加到列表里面
         for i in l:
            print(i)

案例2 加载进度条,并显示百分比

import sys	   //加载sys系统模块
print("loadin...")  //输出内容
for i in range(101):   //取一个数字范围进行循环
    s = "\r %d%% %s"%(i,"#"*i)   //拼接字符串,\r表示光标永远在行首
    sys.stdout.write(s)    //输出变量s所对应的字符串
    sys.stdout.flush()     // 刷新输出的内容
    import time     //加载时间模块
    time.sleep(0.3)   //设置睡眠时间

  

 

文件操作