进击のpython
Python文件操作
在说Python的文件操作之前
我们可以先思考一个问题
平时我们是怎么对电脑中的文件进行操作的呢?
打开电脑?找到文件?打开文件?读文件?修改文件?保存文件?关闭文件
对吧,这就是我们打开文件的基本流程
而 Python 打开文件的方式,也是这样的
打开电脑 ? f=open(filename) ? f.read() ? f.write() ? f.close()
f = open(filename):打开文件
f.read():读文件
f.write():写文件
f.close():保存并关闭
-
文件打开模式
这个概念可能会很陌生
在word中,打开文件之后
就可以对文件进行 读,写,修改等操作
但是在python中,只能以一种模式操作文件
需要确定文件打开模式,才能够进行相应操作
r read 读模式
w write 创建模式 ==如果硬盘里有相同名字的文件,就覆盖掉==
a append 追加模式
-
创建文件
f = open("123.txt", mode="w") f.write("dajiahao woshipeiqi\n") f.write("zheshiwodemama\n") f.write("zheshiwodebaba\n") f.close()
没什么说的,很简单
-
读取模式
f = open("123.txt", mode="r") t = f.read() print(t) f.close()
(换个背景颜色)
还有个语法是 readline() 读一行 自己试试
因为文件只能以一种形式进行操作
那当我用读取模式来操作文件之后,调用创建呢?
f = open("123.txt", mode="r")
t = f.read()
print(t)
f.write("hahh")
f.close()
看到报错了吧?了解没?凑弟弟们!
-
追加模式
追加模式就是在文件尾部添加数据
这么说可能不太好理解
直接上例子吧
当我执行下面的语句
f = open("123.txt", mode="a")
f.write("这是追加模式")
f.close()
执行结果就是这样的:
如果我刚开始的光标在这个位置,再执行相同的语句,就是这种情况:
还看不懂?那就多执行几下看看
有灵性了没???(没有灵性就自己多操作两遍,看不如动手!)
-
循环文件
无论你想做什么,都要先打开文件
你觉得我说的有没有道理?
f = open("123.txt") # 默认模式是read for line in f : print(line) f.close()
欸?这就有问题了,我文件的里面也没有换行啊,怎么打印出来有换行啊?
其实在每行的末尾,他都默认的添加一个\n来进行换行
不信?
f = open("123.txt")
# for line in f :
# print(line)
print(f.readlines())
f.close()
看到了吗?
那遇到问题,怎么解决呢?
可以这样:print("",strip())
自己试试!
-
需求
下面这个文件,我想输出身高超过175的怎么办?
可以利用循环来做
f = open("123.txt")
for line in f:
line = line.split()
if int(line[2]) > 175:
print(line)
f.close()
我还想对体重有要求,这就不用写了吧!
-
语句
seek(x) 光标移动,走x个字节
flush()强制将缓存刷到硬盘
tell()返回光标位置,也是字节单位
truncate()指定长度截断文件,指定长度,从开头到A;不指定就是A到尾
- 混合模式
没想到吧,其实除了三种方法以外,还有另外的三种模式。
r+ 读写,能写能读,跟追加一样
w+ 写读,没什么屁用
a+ 追加读,光标在文件尾部,全是追加模式
自己用,没啥说的,混子,更加好用
- 问题
r+ 覆盖的问题
可以将文件放在内存中,然后对文件进行增删改查,最后覆盖到硬盘上
那不是占内存吗?有没有别的方法?
那你不想占内存,就得占硬盘
边读边写边存
import os old_file = "123.txt" new_file = "456.txt" f_old = open(old_file,"r") f_new = open(new_file, "w") old_str = "shenzhen" new_str = "深圳" for line in f_old: if "shenzhen" in line: line = line.replace(old_str, new_str) f_new.write(line) f_old.close() f_new.close() os.remove(old_file) os.rename(new_file,old_file)
别问os干什么的,有能耐你难为百度去啊…………
*有个练习*
*还挺简单*
~~Python文件简单操作~~
原文地址:https://www.cnblogs.com/jevious/p/11126457.html