day9 文件的读取
文件操作
一、打开文件
f = open('歌词.txt','w',encoding='utf-8') # f:文件操作符 文件句柄 文件操作对象
open打开文件是依赖了操作系统提供的途径
操作系统有自己的编码,open在打开文件的时候默认使用操作系统的编码
win默认编码gbk mac/linux默认utf-8
习惯叫f file f_obj f_handler fh
操作:读 写

f = open('歌词.txt','w',encoding='utf-8')
print(f.writable()) # True writable判断文件是否可写
print(f.readable()) # False readable判断文件是否可读
f.write('7000') # 写文件的时候需要写数字,需要把数字转换成字符串
f.write('wodexintailuan')
f.write('yaoyidiankongbai\n')
f.write('laotianzaibuzai')
f.write('\nlaotianzaibuzai') # 文件的换行
f.write('志强')
f.close() # 关闭文件

二、找到文件详解
找到文件详解:文件与python的执行文件在相同路径下,直接用文件的名字就可以打开文件
文件与python的执行文件不在相同路径下,用绝对路径找到文件
文件的路径,需要用取消转译的方式来表示:1.\\2.r''
如果以写文件的方式打开一个文件,那么不存在的文件会被创建,存在的文件之前的内容会被清空
f = open(r'C:\Users\Administrator\Desktop\s8.txt','w',encoding = 'utf-8') # r取消后面字符串所有的特殊功能
f.write('哈哈哈')
f.close()
三、关闭文件详解
操作系统级别的关闭文件资源:f.close() 必须写
del f 主动释放了python程序内存中的变量 可写可不写
四、读模式

# f = open('歌词.txt','r',encoding = 'utf-8')
f = open('歌词.txt',encoding = 'utf-8') # 默认为r模式
# 读文件的第一种方式:read方法,用read方法会一次性的读出文件中的所有内容
print(f.read())
# 读一部分内容:read(n),指定读n个单位
print(f.read(5))
# 读文件的第三种方式:按照行读,每次执行readline就会往下读一行
content = f.readline()
print(content.strip()) # strip去掉空格、制表符、换行符
content2 = f.readline()
print(content2.strip())
# 读文件的第四种方式:readlines,返回一个列表,将文件中的每一行作为列表中的每一项返回一个列表
content = f.readlines()
print(content)
# 读:最常用
for line in f:
print(line.strip())

五、读文件并整理成需要的数据类型

读文件并整理成需要的数据类型
{'apple':[10,3]}
f = open('shoplist',encoding='utf-8')
goods_dict = {}
for line in f:
line = line.strip()
goods_list = line.split()
goods_dict[goods_list[0]] = goods_list[1:]
print(goods_dict)
f.close() f = open('shoplist',encoding='utf-8')
goods_list = []
for line in f:
goods_dict = {}
line = line.strip()
goods_lst = line.split()
goods_dict['name'] = goods_lst[0]
goods_dict['price'] = goods_lst[1]
goods_list.append(goods_dict)
print(goods_list)
f.close() # 只显示文件中有内容的行
f = open('shoplist',encoding='utf-8')
goods_dict = {}
for line in f:
if line.strip():
print(line.strip())
f.close()

六、文件的打开模式

f = open('歌词.txt','rb')
content = f.read()
print(content)
f.close()
# b:图片、音乐、视频等任何文件
# 传输:上传、下载
# a追加
f = open('shoplist','a',encoding='utf-8')
f.write('\ncomputer 6000 5')
f.close()
# r+ 可读可写
# 先读后写:写是追写
# 先写后读:从头开始写,并且会依次覆盖内容
f = open('歌词.txt','r+',encoding='utf-8')
line = f.readline()
print(line)
f.write('000000')
f.close()
# w+ 可写可读
# 一上来文件就清空了,尽管可读 1.但是读出来的内容是你这次打开文件新写入的2.光标在最后,需要主动移动光标才可读
f = open('歌词.txt','w+',encoding='utf-8')
f.write('abc\n')
f.write('哈哈哈')
f.seek(0)
print(f.read())
f.close()
# a+ 追加可读
f = open('歌词.txt','a+',encoding='utf-8')
f.write('\nqq星')
f.seek(0)
print(f.read())
f.close()
# 一般情况下:文件操作要么读,要么写,很少会用到读写、写读同时用
# 常用的:
# r、w、a
# rb、wb、ab,不需要指定编码了

七、文件内的光标移动
read(3)
文件打开方式为文本模式时,代表读取3个字符
文件打开方式为b模式时,代表读取3个字节

f = open('歌词.txt','r+',encoding='utf-8')
# seek光标移动到第几个字节的位置
f.seek(0) # 光标移动到开头
f.seek(0,2) # 光标移动到最后
f.seek(0,1) # 以当前位置为基准移动
tell告诉我光标在第几个字节
truncate 从文件开始的位置只保留指定字节的内容
f.truncate(3)

八、文件的修改

# 1.创建一个新的文件
f2 = open('原文件.bak','w',encoding='utf-8')
# 2.把原来的文件中的内容读出来
f = open('原文件',encoding='utf-8')
old_content = f.read() # 原来的内容
# 3.操作读出来的字符串,把字符串中的内容替换掉
new_content = old_content.replace('原来','新')
# 4.把替换之后的内容写到新文件里
f2.write(new_content)
f.close()
f2.close()
# 5.删除原文件,新文件重命名成源文件的名字
import os # os模块
os.remove('原文件') # 删除文件
os.rename('原文件.bak','原文件') # 重命名 # 只替换第一个原来
f2 = open('原文件.bak','w',encoding='utf-8')
f = open('原文件',encoding='uft-8')
count = 0
for line in f:
if '原来' in line and count == 0:
new_line = line.replace('原来','新')
f2.write(new_line)
count = 1
else:
f2.write(line)
f.close()
f2.close()
import os # os模块
os.remove('原文件') # 删除文件
os.rename('原文件.bak','原文件') # 重命名

九、with操作文件,不用关闭文件

with open('源文件',encoding='utf-8') as f:
content = f.read()
print(content)
with open('源文件',encoding='utf-8') as f,open('源文件.bak','w',encoding='utf-8') as f2:
for line in f:
new_line = line.replace('原来','新')
f2.write(new_line)
day9 文件的读取的更多相关文章
- excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)
将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable /// <sum ...
- 条形码的应用三-----------从Excel文件中读取条形码
条形码的应用三------从Excel文件中读取条形码 介绍 上一篇文章,我向大家展示了生成多个条形码并存储到Excel文件中的一个方法.后来我又有了个想法:既然条码插入到excel中了,我可不可以从 ...
- java通过文件路径读取该路径下的所有文件并将其放入list中
java通过文件路径读取该路径下的所有文件并将其放入list中 java中可以通过递归的方式获取指定路径下的所有文件并将其放入List集合中.假设指定路径为path,目标集合为fileList,遍 ...
- [html5+java]文件异步读取及上传核心代码
html5+java 文件异步读取及上传关键代码段 功能: 1.多文件文件拖拽上传,file input 多文件选择 2.html5 File Api 异步FormData,blob上传,图片显示 3 ...
- Servlet从本地文件中读取图片,并显示在页面中
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...
- PHP文件操作 读取与写入
基本知识: PHP文件系统是基于Unix系统的 文件数据基本类型:二进制数据.文本数据 文件输入流:数据从源文件到内存的流动 文件输出流:数据从内存保存到文件的流动 文件操作函数: >>& ...
- INI文件的读取(C语言:GetPrivateProfileString/GetPrivateProfileInt)
INI文件格式说明 /********************************************* ini文件说明 ini文件是文本文件,由节点(Section)和键值对(key=val ...
- 文件_ _android从资源文件中读取文件流并显示的方法
======== 1 android从资源文件中读取文件流并显示的方法. 在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样: private ...
- PHP 上传文件和读取文件崎岖路
今天php上传文件和读取文件没有搞出来,全靠后来大神来帮忙,总结一下:主要涉及到一下几个方面,在ubuntu下mkdir文件夹的时候要注意权限问题,一般情况下php是以一个较低的权限去执行的,所以如果 ...
随机推荐
- Jquery Deferred 详解
近期由于公司项目主要由我来负责前端,所以打算优化一下代码.在jquery 里面有个Deferred的对象.为了研究这个也看了不少资料,其中阮一峰的博客写的很详细,这里转载一下. 一.什么是deferr ...
- python 的__FILE__,__LINE__功能实现
在C语言里,__FILE__和__LINE__给调试提供了很大的方便,今晚在写PYTHON的时候想到,PYTHON是否有类似的功能实现呢? GOOGLE一番发现两个方法,试验一下下面这句:print ...
- 加密web.config中的邮件配置mailSettings
加密: 在命令提示符下键入: aspnet_regiis -pef connectionStrings 要加密的web.config完整路经 演示样例:C:\Program Files (x86)\M ...
- [翻译]在ASP.NET Web API中通过OData支持查询和分页
OData可以通过形如http://localhost/Products?$orderby=Name这样的QueryString传递查询条件.排序等.你可以在任何Web API Controller中 ...
- Android音频文件浏览+音频播放
该Demo执行后,会显示全部你sd卡上的音乐文件列表, 并能够点击列表选择某一首歌曲进行播放. 执行效果: 点击download出现: 然后点击歌曲调用系统播放器播放. 源码: activity_au ...
- Java 反射机制[Field反射]
Java 反射机制[Field反射] 1. 反射概念及功能 反射就是把Java类中的各种成分映射成对应的Java类.比如一个Java类中用一个Class类的对象来表示. 一个类中的组成部分分为成员变 ...
- 分享一个Unity3D小作品,源码地址已公布在文章开头!
Update:回复量有点大,楼主工作期间可能无暇向童鞋们发送源码,为了不让童鞋们久等,现公布源码地址. 链接: http://pan.baidu.com/s/1sjpYW4d 密码: zhp9 请注 ...
- 浅析Java与C#的事件处理机制
http://www.cnblogs.com/OOAbooke/archive/2012/02/18/2356899.html
- 你一定喜欢看的 Webpack 2.× 入门实战
from:https://www.jianshu.com/p/b83a251d53db?utm_campaign=maleskine&utm_content=note&utm_medi ...
- 网络通信框架Volley使用详细说明
前一篇粗略的介绍了一下Volley,并在最后附上了一段使用代码,这一篇详细的介绍一下Volley的使用.前面也说了Volley主要获取JSON对象和图片加载,这里也分为两部分介绍. 1.获取JSON对 ...