Python—文件
def fileCopy(src, dst, srcEncoding, dstEncoding):
with open(src, 'r', encoding=srcEncoding) as srcfp:
with open(dst, 'w', encoding=dstEncoding) as dstfp:
dstfp.write(srcfp.read())
fileCopy('sample.txt', 'sample_new.txt', 'cp936', 'utf8')
一.文件基础和基本操作。
1.什么是文件?
为了长期保存数据以便重复使用、修改和共享,必须将数据以文件的形式存储到外部存储介质(如磁盘、U盘、光盘等)或云盘中。
文件:存储在外部介质上的数据或信息的集合 。
程序中的源程序 数据中保存着数据 图像中的像素数据 …
有序的数据序列。
2.文件中的编码
文本显示:计算机显示功能的基本问题
编码:信息从一种形式转换为另一种形式的过程
列如:ASCII码、Unicode、UTF-8…
3.常用的编码
ASCII码:是标准化字符集 7个二进制位编码,表示128个字符, ord()和chr()函数查看
Unicode:跨语言、 跨平台进行文本转换和处理,对每种语言中字符设定统一且唯一的二进制编码,每个字符两个字节长 65536 个字符的编码空间,“ 严” :Unicode的十六进制数为4E25
UTF-8编码:可变长度的Unicode的实现方式 ,“ 严” :十六进制数为E4B8A5Unicode
GBK编码 :《汉字内码扩展规范》 双字节编码
Python中字符串类型未编码 编码encode() 解码decode()
4.文件的分类:
按文件中数据的组织形式把文件分为文本文件和二进制文件
a.文本文件
文本文件存储的是常规字符串,以ASCII码方式存储。如英文字母、汉字、数字字符串。由若干文本行组成,通常每行以换行符'\n'结尾。文本文件可以使用字处理软件如gedit、记事本进行编辑。
b.二进制文件
二进制文件把对象内容以字节串(bytes)进行存储,无法用记事本或其他普通字处理软件直接进行编辑,通常也无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取、显示、修改或执行。常见的如图形图像文件、音视频文件、可执行文件、资源文件、各种数据库文件、各类office文档等都属于二进制文件。
优点: 更加节省空间 采用二进制无格式存储 表示更为精确
注意:
文本文件是基于字符定长的ASCII;
二进制文件编码是变长的,灵活利用率要高;
不同的二进制文件解码方式是不同的。
5.文件的操作流程
a.打开文件
建立磁盘上的文件与程序中的对象相关联
通过相关的文件对象获得
b.文件操作
读取
写入
定位
其他:追加、 计算等
c.关闭文件
切断文件与程序的联系
写入磁盘,并释放文件缓冲区
6.文件的打开
文件对象名=open(文件名[, 打开方式[, 缓冲区]])
a.文件名:指定了被打开的文件名称。
b.打开模式:指定了打开文件后的处理方式,见表7-1。
c.缓冲区:指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区的大小。默认值是缓存模式。
d.open( )函数返回1个文件对象,该对象可以对文件进行各种操作。
例如: f1 = open( 'file1.txt', 'r' ) f2 = open( 'file2.txt', 'w')
文件打开模式:表7-1,例7-1 文件对象属性
7.文件的对象
文件的打开方式
文件对象属性
8.文件对象的常用方法(读写函数)
9.操作实例
a.向文本文件中写入内容
f=open('sample.txt', 'a+')
s= '文本文件的读取方法\n文本文件的写入方法\n'
f.write(s)
f.close()
更建议这样写:
s= '文本文件的读取方法\n文本文件的写入方法\n'
with open('sample.txt','a+') as f:
f.write(s)
使用with自动关闭资源。可以在代码块执行完毕后还原进入该代码块时的现场。 不论何种原因跳出with块,总能保证文件被正确关闭。
在实际开发中,读写文件应优先考虑使用上下文管理语句with,关键字with可以自动管理资源,可以在代码块执行完毕后自动还原进入该代码块时的上下文,常用于文件操作、数据库连接、网络连接、多线程与多进程同步时的锁对象管理等场合。
with open(filename, mode, encoding) as fp: #这里写通过文件对象fp读写文件内容的语句
上下文管理语句with还支持下面的用法:
with open('test.txt', 'r') as src, open('test_new.txt', 'w') as dst:#读写合并
dst.write(src.read())
b.随机产生10个数并写入文件中
import random
alist=[random.randint(1,100) for i in range(10)]
data=[str(i)+'\n' for i in alist]
with open(r'D:\data.txt','w') as fp:
fp.writelines(data)
c.读取文本文件的前五个字符
f=open( 'sample.txt', 'r')
s=f.read(5) #读取文件的前5个字符
f.close( )
print('s=',s)
print('字符串s的长度(字符个数)=', len(s))
d.读取并显示文本文件的所有行
f=open(r'D:\Zen.txt', 'r')
while True:
line=f.readline()
if line=='':
break
print(line)
f.close()
或者可以写成这样
f=open(r'D:\Zen.txt', 'r')
li=f.readlines()
for line in li:
print(line)
f.close()
e.将一个CP936编码格式的文本文件中的内容全部复制到另一个使用UTF8编码的文本文件中。
Python—文件的更多相关文章
- Linux下Python 文件内容替换脚本
Linux下Python 文件替换脚本 import sys,os if len(sys.argv)<=4: old_text,new_text = sys.argv[1],sys.argv[2 ...
- 【Python文件处理】递归批处理文件夹子目录内所有txt数据
因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...
- Python文件使用“wb”方式打开,写入内容
Python文件使用"wb"方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入 ...
- Python 文件操作函数
这个博客是 Building powerful image classification models using very little data 的前期准备,用于把图片数据按照教程指示放到规定的文 ...
- python文件I/O(转)
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- python 文件操作总结
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- python文件和元组
python文件操作 相较于java,Python里的文件操作简单了很多 python 获取当前文件所在的文件夹: os.path.dirname(__file__) 写了一个工具类,用来在当前文件夹 ...
- Python文件基础
===========Python文件基础========= 写,先写在了IO buffer了,所以要及时保存 关闭.关闭会自动保存. file.close() 读取全部文件内容用read,读取一行用 ...
- python文件打包格式,pip包管理
1..whl是python文件的一种打包格式, 在有些情况下,可以将文件的后缀名改为.zip并解压 2.cmd中,提示pip版本太低,先升级pip pip install --upgrade pi ...
随机推荐
- thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
这篇文章主要介绍了thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法,结合简单示例形式分析了thinkPHP5框架验证码相关配置.后台验证.前台刷新等操作技巧,学习thinkphp源码的朋 ...
- Flask的request和session是从哪里来的?
因为之前一直在项目中使用django, 所以在学习Flask的过程中, 难免对吧django和Flask进行对比, 这一次我发现Flask中的request和session并没有想象的那么简单, 所以 ...
- PHP对接QQ互联,超级详细!!!
SDK下载
- hiveserver2不能启动
我的hiveserver2一直不能启动,命令行一直卡住不动,然后我就想是不是配置文件没有配置相关的参数,然后就来修改hive-site.xml 最终修改完后的hive-site.xml: <?x ...
- c语言中:strlen和sizeof的区别和它们分别交换各自作用领域(\0问题)时的细微差别!!!
本人c语言初学菜鸟一枚,今天通过敲了一段简单代码,发现strlen和sizeof之间的一些关系,总结如下: 用strlen计算数组长度要考虑进去\0 用sizeof计算字符串长度也要考虑进去\0 而s ...
- 小程序开发-10-新版Music组件、组件通信与wxss样式复用
加入缓存提升用户体验 思路:先从缓存中寻找数据或者从服务器中获取数据写入缓存中 优点:减少网络访问次数,提升用户体验 解决缓存带来的问题 问题:比如原先是不喜欢的在点击喜欢的时候,跳到下一期刊后返回来 ...
- 如何使用GeoServer发布地图
本文所采用的系统为Windows 10 64bit操作系统,使用FireFox浏览器 一.安装配置Java的SDK 1. 安装JavaDevelopment Kit (JDK) 8,java开发环境, ...
- NSNull Crash处理 (NullSafe 的原理)
问题场景 后端返回的数据中总会出现一些NSNull类型,当我们一处理程序就会崩溃,因此想到把返回的数据中的NSNull类型全部转换成@""空字符串 (1)原始的json串:后端返回 ...
- 在Win10中通过命令行打开UWP应用
近期由于需要在WinX菜单中添加几个UWP应用,但发现很难找到相应的命令行,Universal Apps 的快捷方式属性里也没有. 于是到网上搜了很久才找到一个E文的页面,试了一下确实可行,分享给大家 ...
- 分享开源的GB/T-2260国家行政区划代码
项目中需要用到省市数据,在网上搜了一下,很多旧数据,稍微新一点的下载就要积分.X币什么的,很不爽,最后在GitHub上找到一个开源的,还有各种语言版本的,非常方便! https://github.co ...