day9笔记--文件操作
文件操作
计算机系统分为:计算机硬件,操作系统,应用程序三部分。
我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。
读 1.、找到文件 2、打开文件 3、操作:读 写 4、关闭
#open打开文件是依赖了操作系统的提供的途径
#操作系统有自己的编码,open在打开文件的时候默认使用操作系统的编码
#win gbk mac/linux utf-8 f = open('歌词','w',encoding='utf-8') #f:文件操作符 文件句柄 文件操作对象
a = f.write('') # a =10 数字,写入的长度
print(a,type(a))
print(f,type(f)) #_io.TextIOWrapper name='歌词' mode='w' encoding='utf-8' windows的对应该文件的指针 class '_io.TextIOWrapper'
f.close() #找到文件详解:文件与py的执行文件在相同路径下,直接用文件的名字就可以打开文件
#文件与py的执行文件不在相同路径下,用绝对路径找到文件
#文件的路径,需要用取消转译的方式来表示:1.\\ 2.r''
#如果以写文件的方式打开一个文件,那么不存在的文件会被创建,存在的文件之前的内容会被清空 w 模式有清空效果
#习惯叫 f file f_obj f_handler fh 句柄的名字
# print(f.writable()) #判断文件是否可写
# print(f.readable()) #判断文件是否可读
# f.write('7018201890') #写文件的时候需要写数字,需要把数字转换成字符串
# f.write('aasjgdlwhoojfjdaj')
# f.write('iq349jdsh\n')
# f.write('aks')
# f.write('\nsdgawo') #文件的换行
# f.write('天道酬勤') #utf-8 unicode gbk
#f.close()
#关闭文件详解
#操作系统级别的关闭文件资源:f.close() 必须写
#del f主动释放了一个python程序内存中的变量 可写可不写
写
f = open('歌词','r',encoding='utf-8') #f:文件操作符 文件句柄 文件操作对象
# 一次性读出
# content = f.read() # read 默认会把文件中所有内容默认一次性全部读出,但是文件过大会造成内存占用过大甚至溢出
# print(content)
#一次读一部分
# f.seek(15) # seek 移动光标到某个位置
# content = f.read(1) #read 后加字符数 注:回车符占一个字符= 2个字节 window中换行默认是\r\n
# print(f.tell()) # 光标移动到某个位置 seek(f.tell)
# print(content)
#按照行读,每次执行readline就会往下读一行
# content = f.readline()
# print('readline : ',content.strip()) #strip去掉空格、制表符、换行符
# content2 = f.readline()
# print(content2.strip()) # 一次读取一行 print 带的有回车,所以去掉行末的回车,如果不想让print换行,可以加上end='' 等,以什么结尾
#4.读文件的第四种方式:readlines,返回一个列表,将文件中的每一行作为列表中的每一项返回一个列表
# content = f.readlines()
# print(content) #将文件的每一行作为元素创建成列表 ,换行符在上边。占用内存
#最常用的是用for 循环操作
for line in f:
f.seek(0)
print(line.strip())
# 不占 内存。 用strip将回车符去掉。
# read, readline ,readlines 都从光标位置读气,光标走过的将不再读出 for 循环中,seek有效
f.close()
f = open('shoplist',encoding='utf-8') #读文件并整理成需要的数据类型
goods_list = []
for line in f:
if line.strip():
goods_dic = {'name':None,'price':None}
line = line.strip()
goods_lst = line.split()
print(goods_lst)
goods_dic['name'] = goods_lst[0]
goods_dic['price'] = goods_lst[1]
goods_list.append(goods_dic)
print(goods_list)
f.close()
f = open('shoplist',encoding='utf-8') #只显示文件中有内容的行
goods_list = []
for line in f:
if line.strip():
print(line.strip())
f.close()
文件练习,购物车模型
读写 r+ w+ a+
#写入
#a+
# f = open('shoplist','a+',encoding='utf-8')
# print(f.readable())
# f.write('\ncomputer 6000 5')
# f.write('\ncomputer 6000 5')
# f.write('\ncomputer 6000 5')
# f.write('\ncomputer 6000 5')
# f.close()
# with open('歌词', 'r+',encoding='utf-8') as f1:
# print(f1.read(4))
# print(f1.tell())
# f1.seek(f1.tell())
# f1.write('a') # r+ 模式可读可写,如果先读的话,那么写的话只会在最后边。如果想让他回到读的位置写,那么使用seek(f.tell()),
#注:此时的写入是覆盖式的写入,会破坏后边完整的字节 如果文件不存在不能读也不能r+
# r+ 可读可写:
#2.先写后读:从头开始写
# with open('歌词', 'r+', encoding='utf-8') as f1:
#
# f1.write('abc')
# f1.seek(0)
# print(f1.read()) # 写过后的字节将不可再读 # w+ 可写可读:一上来文件就清空了,
# 尽管可读:1.但是你读出来的内容是你这次打开文件新写入的
# 2.光标在最后,需要主动移动光标才可读
# f = open('歌词','w+',encoding='utf-8')
# f.write('中')
# f.write('及哈哈哈')
# f.seek(0)
# f.write('a')
# print(f.read())
# f.close() # 移动seek光标去写,也是覆盖
#a+ 追加可读 移动光标无效 只能最后追加去写
f = open('歌词','a+',encoding='utf-8')
f.seek(0)
f.write('a')
f.close()
#一般情况下:文件操作,要么读,要么写,很少会用到读写、写读同时用的
#常用的:
#r、w、a
#rb、wb、ab,不需要指定编码了
#
# f = open('歌词','rb')
# content = f.read()
# f.close()
# print(content)
# f2 = open('歌词2','wb')
# f2.write(content)
# f2.close()
由于历史的原因,换行符在不同的系统中有不同模式,比如在 unix中是一个\n,而在windows中是‘\r\n’,用U模式打开文件,就是支持所有的换行模式,也就说‘\r’ '\n' '\r\n'都可表示换行
t是windows平台特有的所谓text mode(文本模式),区别在于会自动识别windows平台的换行符。
光标位置 seek(0,2) seek(0)
f = open('歌词','r+',encoding='utf-8')
f.readlines()
for line in f:
print(line) # 此时是空的,光标走过的位置不再读,这个是通用的,truncate 和 a 模式的写不受影响
#seek 光标移动到第几个字节的位置
# f.seek(0) 移动到最开始
# f.seek(0,2) 移动到最末尾
#f.truncate(3) #从文件开始的位置只保留指定字节的内容
f.truncate(2) # 需要加参数,从文件开头保留几个字节
# f.write('我可写了啊')
#tell 告诉我光标在第几个字节
#seek移动光标到指定位置
# content = f.readline()
# print(content.strip())
#tell告诉你当前光标所在的位置
# print(f.tell())
# f.seek(4) #光标移动到三个字节的地方‘\r\n’
# content = f.read(1) #读一个字符
# print('***',content,'***')
# content = f.readline()
# print(content.strip())
# print(f.tell())
f.close()
#seek:去最开始、去最结尾
#truncate:保留n个字节 不受seek干扰
day9笔记--文件操作的更多相关文章
- erlang学习笔记(文件操作)
参考这里和这里了解到的文件操作的模块有很多:kernel下有:file,stdlib下有:filelib,filename,file_sorter.(具体查看官方文档)
- python学习笔记:文件操作和集合(转)
转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...
- python基础学习笔记——文件操作
文件操作 初始文件操作 使用Python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了 根据打开方式的不同能够执行的操作 ...
- 03 python学习笔记-文件操作(三)
本文内容主要包括以下方面: 1. 文件操作基本认识2. 只读(r, rb)3. 只写(w, wb)4. 追加(a, ab)5. r+读写6. w+写读7. a+写读(追加写读)8. 文件的修改 一.文 ...
- C学习笔记-文件操作
文件操作大致分三步 打开文件 读写文件 关闭文件 二进制和文本模式的区别 在windows系统中,文本模式下,文件以"\r\n"代表换行.若以文本模式打开文件,并用fputs等函数 ...
- Python学习笔记——文件操作
python中,一切皆对象. 一.文件操作流程 (1)打开文件,得到一个文件句柄(对象),赋给一个对象: (2)通过文件句柄对文件进行操作: (3)关闭文件. 文件对象f通过open()函数来创建 ...
- Python3.5学习笔记-文件操作
在Python中,操作文件对象使用open函数来创建,下表列出了常用的操作file的函数: 序号 方法及描述 1.file.close() 关闭文件.关闭后文件不能再进行读写操作. 2.file.fl ...
- [terry笔记]文件操作
如下记录一次作业: 很显然,我这个应该属于二逼青年版,会在以后更新文艺青年版的答案. 1.模仿sed,一个文件中,用新字符串替换老字符串. # file = input("file_name ...
- c语言学习笔记 - 文件操作
#include <stdio.h>#include <time.h> int main(void){ time_t t; //类似于size_t那 ...
随机推荐
- OOP几大原则【转】
设计模式遵循的一般原则: 1.开-闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开发,对修改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前 ...
- Scala快学笔记(二)
一,基本概念 1,映射 Map与HashMap与TreeMap,SotredMap等区别: 1.HashMap键无序,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度 ...
- Hadoop+Spark+Hbase部署整合篇
之前的几篇博客中记录的Hadoop.Spark和Hbase部署过程虽然看起来是没多大问题,但是之后在上面跑任务的时候出现了各种各样的配置问题.庆幸有将问题记录下来,可以整理出这篇部署整合篇. 确保集群 ...
- mac 777权限设置
1. cd 你的文件夹路径的上一级目录. 2. sudo chmod -R 777 你的文件夹名. 3. 输入密码. 4.成功
- 入侵者已经拿到了主机的管理员权限,请你列举几种留后门的方法:(windows和LINUX系统均可)
Webshell后门 XSS后门 远控后门&rootit(windows&LINUX) SSH后门 SHIFT终端服务器后门 系统用户账号克隆 SQL数据库扩展存储型后门 SQL数据库 ...
- 移动端H5页面 input 获取焦点时,虚拟键盘挡住input输入框解决方法
在移动端h5开发的时候,发现如果input在页面底部,当触发input焦点的时候会弹出系统虚拟键盘,虚拟键盘会遮挡input输入框.这会很影响用户体验,于是在网上找到了如下的解决办法: 方法一:使用w ...
- iOS 之UIBezierPath
代码地址如下:http://www.demodashi.com/demo/11602.html 在之前的文章中,由于用到过UIBezierPath这个类,所以这里就对这个类进行简单的记录一下,方便自己 ...
- JS的同步加载、异步加载
在使用js展开式菜单时,发现只有加载完页面包含的js文件时,展开菜单才能折叠起来. 查找了一下原因:是因为js页面加载使用的是同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止后续的解析,只有当当前 ...
- 使用Google Https搜索
一. 将浏览器Google的默认搜索使用https 1. IE浏览器 进入注册表搜索"google.com"将搜索替换成https://www.google.com.hk 2. F ...
- EFM8单片机与I2C外设通信
近期帮同学做一个项目,开发板是EFM8单片机,支持SPI和I2C协议(SMBus).非常久没搞过单片机了,并且条件限制,为了使单片机和外设成功通信.花了一个星期时间.刚開始使用SPI.发现代码逻辑都没 ...