python_文件 处理
一、字符编码
- 内存固定使用unicode编码
- 数据最先产生于内存中,是unicode格式,要想传输需要转成bytes格式
# unicode -------> enconde( u t f - 8 ) -------> bytes
拿到bytes,就可以往文件内存放或者基于网络传输
# bytes --------> enconde( u t f - 8 ) -------> unicode
- python 3 中字符串被识别为 unicode
python 3 中的字符串encode得到bytes
python 2 中的字符串就是 bytes
python 2 在字符串前加 ‘u’ ,就是unicode
二、文件处理
流程:打开文件===>得到文件句柄并赋值给变量 ====> 通过句柄操作文件==>关闭文件
读文件:
f = open( ‘aaaa.py ’ , ‘ r ’ ,encoding = ‘utf-8’ ) print( f.readline() ,end= ‘’)#读取一行 print( f.readlines() , end=’’ )#读取全部,不换行 print( f.readable() )#可读文件 print( f.writable() )#不可写文件 f.close()#结束之后必须关闭,否则占用内存
写文件:
f = open( ‘new_2’, ‘w’,encoding=’utf-8’ ) print( f.readable() )#不可读 print( f.writable() )#可写 f.write( ‘888888\n’ )#追加单行 f.write( ‘999999\n’ )#追加 f.writelines( [ ‘787878\n’ , ‘878787\n’] )#追加多行 f.close()#关闭文件
追加:
f=open('new_2','a',encoding='utf-8')
print(f.readable()) #不可读
print(f.writable()) #可写
f.write('888888\n') #追加单行
f.write('999999\n')
f.writelines(['787878\n','878787\n']) #追加多行
f.close()
#rb
f=open('aaaa.py','rb') #以字节打开
print(f.read().decode('utf-8'))
拷贝图片:
f=open('1.jpg','rb') #以rb的方式打开1.JPG
data=f.read() #data获取读取到f的内容
print(data)
f2=open('3.jpg','wb') #以写的方式打开
f2.write(data) #把data的内容写到f2
f2.close()
f.close()
#ab,以二进制的形式追加
f=open('new_3.txt','ab')
f.write('aaaaa\n'.encode('utf-8'))
*上下文管理:
with open('aaaa.py','r',encoding='utf-8') as read_f,\
open('aaaa_new.py','w',encoding='utf-8') as write_f:
data=read_f.read()
write_f.write(data)
循环取文件每一行内容:
with open('a.txt','r',encoding='utf-8') as f:
while True:
line=f.readline()
if not line:break
print(line,end='')
lines=f.readlines() #只适用于小文件
print(lines)
data=f.read()
print(type(data))
for line in f: #推荐使用
print(line,end='')
文件的修改:
方式一:只适用于小文件
import os
with open('a.txt','r',encoding='utf-8') as read_f,\
open('a.txt.swap','w',encoding='utf-8') as write_f:
data=read_f.read()
write_f.write(data.replace('alex_SB','alex_BSB'))
os.remove('a.txt')
os.rename('a.txt.swap','a.txt')
#方式二:
import os
with open('a.txt','r',encoding='utf-8') as read_f,\
open('a.txt.swap','w',encoding='utf-8') as write_f:
for line in read_f:
write_f.write(line.replace('alex_BSB','BB_alex_SB'))
os.remove('a.txt')
os.rename('a.txt.swap','a.txt')
文件函数操作介绍
|
函数 |
说明 |
|
file.read ( [ size ] ) |
读取文件全部内容 |
|
file.readline ( [ size ] ) |
一行一行的读取 |
|
file.readlines ( [ size ] ) |
读取到的每一行内容作为list中的元素 |
|
file.write ( str ) |
将字符串写入文件 |
|
file.writelines ( sequence or stringe) |
写多行到文件,参数可以是一个可迭代的object/list/tuple... |
|
file.close() |
关闭已经打开的文件 |
|
file.fileno ( self ) |
文件描述符 |
|
file.flush ( self ) |
刷新缓冲区的内容到硬盘 |
|
file.isatty ( self ) |
判断文件是否是 tty 设备,如果是 tty设备则返回True |
|
file.readable ( self ) |
判断是否可读 ,如果可读返回True,否则返回False |
|
file.readline ( self , limit=-1 ) |
每次仅读取一行数据 |
|
file.readlines ( self , hint=-1 ) |
把每一行内容当做列表(list)的一个元素 |
|
file.tell(self) |
获取指针位置 |
|
file.seek(self,offset, whence=io.SEEK_SET) |
指定文件中指针的位置 |
|
file.seekable(self) |
指针是否可操作 |
|
file.writable(self) |
是否可写 |
|
file.writlines(self,lines) |
写入文件的字符串序列,序列可以是任何迭代的对象字符串 |
|
file.read(self,n=None) |
读取指定字节数据,后面不加参数默认读取全部 |
|
file.write(self,s) |
往文件中写内容 |
python_文件 处理的更多相关文章
- python_文件
1. 打开文件 (1) open(name[, mode[, buffering]]) 功能:打开文件或者新建一个文件 参数说明: mode: "r" : 读模式(默认) &q ...
- Python_文件与文件夹操作
''' os模块除了提供使用操作系统功能和访问文件系统的简便方法之外,还提供了大量文件与文件夹操作的方法. os.path模块提供了大量用于路径判断.切分.连接以及文件夹遍历的方法. shutil模块 ...
- Python_文件处理
1.Python 文件处理 打开文件---->读取内容---->获得内容 读取文件方式: r 只读文件 w 只写模式 a 追加模式 r+b 读写模式 w+b 写读模式 a+b ...
- python_文件操作
说明:如有转载,请标明出处!! 一.文件操作 1.文件常用操作方法 open() f=open('文件名','r',encoding='utf-8') #三个参数,第一个文件详细路径,需要写明文件格式 ...
- 零基础学习python_文件(28-30课)
本人小白一枚,随着现在对测试要求越来越高,动不动就要去会一门编程语言,没办法只能学习学习Python,今天看到几个月前还是菜鸟的人突然就已经能使用Python写简单系统了,没办法,虽然之前也简单学习过 ...
- python_文件操作代码实例
"""提示:代码中的内容均被注释,请参考,切勿照搬""" 1 #文件的打开和关闭 ''' 文件对象 = open('文件名','使用方式') ...
- python_文件的打开和关闭
文件对象 = open('文件名','使用方式')rt:读取一个txt文件wt: 只写打开一个txt文件,(如果没有该文件则新建该文件)会覆盖原有内容at:打开一个txt文件,并从文件指针位置追加写内 ...
- python_文件io
# -*- coding:UTF-8 -*-#从键盘读入raw_input([prompt]) #函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符)#input([prompt]) 函数和 ...
- Python_文件相关操作
1.open(filePath,type)方法:打开文件 filePath:文件路径 type:操作文件的方式(r:读取,w:覆盖写入,a:追加写入) 2.strip()方法:去除读取到的每行内容后的 ...
随机推荐
- poj3420 Quad Tiling
传送门 题目大意 问讲一个大小为4*n的棋盘用无数1*2的骨牌不重叠覆盖有多少种方案. 分析 我们考虑可以将长为n的棋盘分为两块,一个大小为n-i,另一个大小为i,而为了避免对于不同的i构造出相同的情 ...
- C++二进制文件读写
简单二进制文件读写,多文件 /*Demo9.1.cpp*/ #include <iostream> #include <fstream> #include <string ...
- mysql--约束条件
主键的测试 PRIMARY KEY(PRIMARY可以省略) --查看创建表的标的定义,可以查看主键 SHOW CREATE TABLE user1; ,'king');--主键不能重复 ,'kin ...
- 2013年第四届蓝桥杯省赛试题(JavaA组)
1.结果填空 (满分3分)2.结果填空 (满分5分)3.结果填空 (满分6分)4.结果填空 (满分13分)5.代码填空 (满分5分)6.代码填空 (满分10分)7.程序设计(满分4分)8.程序设计(满 ...
- javaScript实现轮播图
一.需求分析 在首页完成对轮播图的效果实现,完成自动切换图片的功能. 二.技术分析 获取元素 document.getElementById(“id 名称”) 事件(onload) 定时操作: set ...
- Algorithms - Bucket sort
印象 图1 将元素分布在桶中 图2 元素在每个桶中排序 思想 桶排序将数组分到有限数量的桶子里.每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序). 分析 时间复杂度: ...
- iOS开发之蓝牙使用-建立连接的
1.大佬笔记 CSDN 2.代码 github
- Java基础之Java编译运行过程
Java编译运行过程 程序员所编写的是以.java为后缀的文件,此文件操作系统不能正确识别,因此,首先要经过编译,生成所谓的字节码文件(.class),而字节码文件需要JVM来提供运行环境的支持. J ...
- server2008 IIS7配置全过程(包括发布ASP网站)
一.安装IIS 1.打开服务器管理器->角色->添加角色,选中WEB服务器(IIS),记得要把包括之后出现的ASP相关的东西都选中并安装,安装成功后,打开http://localhost/ ...
- UDP socket
1.Udp :User Datagram Protocol(Udp)用户数据报文协议. 2.适用于局域网的主机间通信. 3.使用方法 1:创建Socket OS_Socket local(127.0. ...