文件操作
Posted 花豆豆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。
文件操作:
1、读取文件的相关参数:
(1)open() ##打开一个文件的函数
file = open(\'file1\',encoding=\'utf8\') //打开一个文件,指点编码为utf8,并赋值给一个变量
data = file.read() // read读取文件内容,将内容赋值给一个变量
print(data) //输出文件内容
file.close() //关闭文件
结果:
(2)close() ##关闭一个文件的函数,例子同上
(3)read() ##读取文件内容,例子同上
(4)readable() ##判断文件是否可读
file = open(\'file1\',encoding=\'utf8\')
data = file.readable() //判断文件是否可读
print(data)
file.close()
结果:
(5)readline() ##每次只读取文件的一行内容
file = open(\'file1\',encoding=\'utf8\')
data = file.readline() //读取一行并空行隔开,如果不想有空行,在输出内容的时候加一个end=\'\'
data1 = file.readline() //读取一行
print(data)
print(data1)
file.close()
结果:
print(data,end=\'\') // 去掉空行
print(data1)
结果:
(6)readlines() ##把文件内容都读取出来,输出为列表的形式
file = open(\'file1\',encoding=\'utf8\')
data = file.readlines() // 读取全部数据
print(data)
file.close()
结果:
2、写文件的相关参数:
(1)w参数:
file = open(\'file1\',\'w\',encoding=\'utf8\') // 加个w就表示在执行写操作
data = file.read() //在写的过程中去读取文件,会报错,并且会清空整个文件
file.close()
结果:
ps:如果文件不存在,直接打开并关闭则会创建一个新的文件
(2)write() ##写操作,直接把要写的内容放在括号里
file = open(\'file1\',\'w\',encoding=\'utf8\')
file.write(\'11111\\n22222\\n33333\\n\')
file.close()
结果:
(3)writable() ##判断一个文件是否可写
file = open(\'file1\',\'w\',encoding=\'utf8\')
file.writable()
print(data)
file.close()
结果:
(4)writelines() ##用列表的形式写入内容
file = open(\'file1\',\'w\',encoding=\'utf8\')
file.writelines([\'xyyyyyyp\\n\',\'dadasda\\n\'])
file.close()
结果:
(5)a参数:
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 = file.readlines()
file11.write(\'呦呦呦 切克闹\')
使用with的方法打开一个文件,不用在最后面加上一个file.close,以便操作过多忘记
3、其他参数:
(1)r+ 可读可写:
with open(\'file1\',\'r+\',encoding=\'utf8\') as f:
print(f.read())
f.write(\'\\nhello\')
读结果:
写结果:
(2)w+ 可读可写:
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
b、r+和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) //设置睡眠时间
以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章