python学习之路---day008
文件操作一:文件操作01):文件读取:(r 只读)
001):我们先在当前文件夹内创建txt文件取名为123,在其中添加几句话内容。 f 称之为文件句柄,控制着 123 这个文本文档
f=open(",mode="r",encoding="utf-8")
print(f.read()) -->读取文本的全部内容
content=f.read(4) #读取文本中的前4个数据
print(content)
content=f.readline() #读取第一行数据
content=f.readlines() #读取全部内容,返回的结果是列表。而且是有换行符 \n
打印例子:['哎呦喂,客官今天吃点啥嘞\n', '来个烤猪蹄吧\n', '烤猪蹄卖完']
可以用 strip()去掉空格和换行符
002:)无限循环案例:
f=open(",mode="r",encoding="utf-8")
while 1: #while 1 会执行无限循环,当起循环完文件中内容后,就不段循环换行符,所以后面出现很多空白
count=f.readline()
print(count)
003):绝对路径和相对路径的问题 1. 绝对路径(当文件路径是固定的时候)
从磁盘根目录找文件。 windows下用的就是c,d,e,f, linux: \user\bin\xxxx
比如 :D:\BaiduNetdiskDownload\旺财的粮食\第一天的吃的食物.txt
2. 相对路径(用的多)
相对路径相对于当前程序所在的文件夹
../ 表示上一层文件夹
\n \t 转义字符。 有固定的含义的。 推荐用r
rD:\BaiduNetdiskDownload\旺财的粮食\第一天的吃的食物.txt
004):文件句柄:f
文件句柄是可以迭代的,例如:
f=open(",mode="r",encoding="utf-8")
for i in f: #读取文中的文内容,一行一行的读取。每读取一次将值交给前面的变量i
print(i)
打印结果是有换行和空格的,但是可以用.strip 去掉换行和空格
02):文件写入(只写w)
!!!!!重点重点重点!!!!!!会清空全文件的内容
001):w 写步骤 : 先清空原文件的所有内容,再写入
f=open(",mode="w",encoding="utf-8")
f.write("哎呦,打尖还是住店呀!")
f.close() #从文件中可以看到,多了一个名为 456 的文本文件,
而且文本文中还是有内容的!
#f.write("6789\n") \n 将写入的内容增加在下一行
002):文本文件的复制
f1=open(r",mode="r",encoding="utf-8") #r 是为了去掉换行
f2=open(r",mode="w",encoding="utf-8") #w会将123 里面的内容先清空 再执行后面的语句
for i in f1:
f2.write(i) #将f1 文件里面的内容一行一行迭代,每迭代一次就将内容复制给f2
print(f1,f2) # 执行这条操作后,两个文件的内容会完全一样
#在执行上面操作时候,发现f1 和f2 的内容一模一样了。
03):b(bytes)
(b 读取是字节,用来操作非文本文字,像视频,图片等)
有 rb(读取非文本的内容) wb(写非文本的内容) ab (增加非文本内容)
实际操练:将d盘的图片 复制到f盘
操作代码:
#将D盘的 哈哈哈.jpg 图片复制到f盘中
f1=open(r"D:\哈哈哈.jpg",mode="rb")
f2=open(r"E:\哈哈哈.jpg",mode="wb")
for i in f1: #分批量的读取数据
f2.write(i) # open()出来的结果可以使用read或者write. 根据mode来看
#将循环出来的内容i 复制给f2
f1.close()
f2.close()
04):读写操作( r+ ) + 是代表是扩展的意思(其他:w+ 写读操作,a+ 追加写读操作) 例子: 001):r+()读写操作 #读写操作要先 读取,在写入内容(写入的内容会在文本最末端)
正确例子:
f=open(",mode="r+",encoding="utf-8")
f1=f.read() #必须是先读取,再写入,不然会覆盖原本文档里面的内容
f.write("哎呦喂")
print(f1)
#结果是 我们在读取后,只会显示999这个文件的里面的内容,后面增加的内容没有被打印出来!
错误例子:
f=open(",mode="r+",encoding="utf-8")
f.write("哎呦喂")
content=f.read()
print(content) #执行程序后 原文件999 的文件里面的前几个数据被“哎呦喂” 给覆盖了
所以必须要先读取,再写入才行!
r+不论你怎么读取,先读后再写入,增加的内容都是在文本的最末位
f=open(",mode="r+",encoding="utf-8")
count=f.read()
f.write("zhnedea")
print(count)
#可以到999的文本文件,读取答应出来的是文本的原来的内容,但是去999的文件看下,可以看到文本文件
最后面增加了我们写入的文件 "zhendea"
错误例子
002):w+ 写读 (一定要记住 w 会先清空原来内容然后再写入,牢记呀)
f=open(",mode="w+",encoding="utf-8")
f.write("这个是增加的内容")
count=f.read()
print(count) #去999文本文件看,原文件被清空了,只有新增加的内容!
f.close()
003):a+(追加读写)
不论光标在何处,写入的时候都是在末尾。(按键盘上上 insert 光标就出来了 )
f=open(",mode="a+",encoding="utf-8")
f.write("hahahah")
f.write("hhdjfhadhfidanf")
count=f.read()
print(count)
#解释:不论光标在何处,写入的时候都在末尾,(末尾指的是:光标在原内容的最后面,不是在增加后的内容的最后面)
05):修改⽂件以及另⼀种打开⽂件的⽅式
⽂件修改: 只能将⽂件中的内容读取到内存中, 将信息修改完毕, 然后将源⽂件删除, 将新 ⽂件的名字改成老⽂件的名字
# ⽂件修改import os
with open("⼩娃娃", mode="r", encoding="utf-8") as f1,\
open("⼩娃娃_new", mode="w", encoding="UTF-8") as f2:
content = f1.read()
new_content = content.replace("冰糖葫芦", "⼤⽩梨")
f2.write(new_content)
os.remove("⼩娃娃") # 删除源⽂件
os.rename("⼩娃娃_new", "⼩娃娃") # 重命名新⽂
文件修改案例
弊端: ⼀次将所有内容进⾏读取. 内存溢出. 解决⽅案: ⼀⾏⼀⾏的读取和操作
import os
with open("⼩娃娃", mode="r", encoding="utf-8") as f1,\
open("⼩娃娃_new", mode="w", encoding="UTF-8") as f2:
for line in f1:
new_line = line.replace("⼤⽩梨", "冰糖葫芦")
f2.write(new_line)
os.remove("⼩娃娃") # 删除源⽂件
os.rename("⼩娃娃_new", "⼩娃娃") # 重命名新⽂件
解决方案
python学习之路---day008的更多相关文章
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- Python学习之路-Day2-Python基础3
Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...
- Python学习之路-Day2-Python基础2
Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...
- Python学习之路-Day1-Python基础
学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...
- python学习之路网络编程篇(第四篇)
python学习之路网络编程篇(第四篇) 内容待补充
- Python学习之路【第一篇】-Python简介和基础入门
1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...
- python 学习之路开始了
python 学习之路开始了.....记录点点滴滴....
- python学习之路,2018.8.9
python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!
- Python学习之路——pycharm的第一个项目
Python学习之路——pycharm的第一个项目 简介: 上文中已经介绍如何安装Pycharm已经环境变量的配置.现在软件已经安装成功,现在就开始动手做第一个Python项目.第一个“Hello W ...
随机推荐
- 【原创】9. MYSQL++中的Field、FieldNames以及FieldTypes类型
mysqlpp::Field其实使用的并不多,主要在于Result.h中ResultBase以及他的派生类型(UseQueryResult和StoreQueryResult)的几个获取下一个field ...
- selector在color和drawable目录下的区别
selector作为drawable资源时,放于drawable目录下,并且item指定android:drawable属性,引用使用@drawable而不是@color selector作为colo ...
- memcache 随笔
第一次用可能有很多不足的地方 以后慢慢改进. memcache 是一个简单的键/值对 是通过键和值储存信息到memcache中 ,通过特定的键请求来返回信息. 信息会无限期的保留在内存中 : ...
- 项目二:品优购 第二天 AngularJS使用 brand商品页面的增删改查
品优购电商系统开发 第2章 品牌管理 传智播客.黑马程序员 1.前端框架AngularJS入门 1.1 AngularJS简介 AngularJS 诞生于2009年,由Misko Hevery 等人 ...
- Ubuntu16.04 ARM平台移植libcurl curl-7.63.0
libcurl是免费的轻量级的客户端网络库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,POP3, P ...
- WCF把书读薄(3)——数据契约、消息契约与错误契约
上一篇:WCF把书读薄(2)——消息交换.服务实例.会话与并发 十二.数据契约 在实际应用当中数据不可能仅仅是以int Add(int num1, int num2)这种简单的几个int的方式进行传输 ...
- Eclipse下Android的NDK开发环境配置
编辑2016年7月26日——增加了下载网址,修改了一些错误. 摸索了一周,走了很多弯路,磕磕绊绊,总算是弄好了NDK的开发环境,在这里总结一下吧. 一.Android NDK开发环境 首先下载安装JR ...
- python之numpy文件操作
目录 numpy 中的文件操作总结 CVS文件 多维数据的存取 numpy 的便捷文件存取 numpy 中的文件操作总结 CVS文件 CSV (Comma‐Separated Value,逗号分隔值) ...
- windows phone之依赖属性(DependencyProperty)
Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能,这些服务通常统称为 WPF 属性系统.由 WPF ...
- 基于任务的异步编程模式(TAP)
异步编程是C#5.0的一个重要改进,提供两个关键字:async和await.使用异步编程,方法的调用是在后台运行(通常在线程或任务的帮助下),但不会阻塞调用线程.异步模式分为3种:异步模式.基于事件的 ...