Python学习笔记 29

文件操作②

二进制文件

open()方法里的mode参数:

  • t 读取文本文件(默认值)
  • b 读取二进制文件

通过改变mode参数对二进制文件进行操作

file_name = 'DD.jpg'

# 读取模式
# t 读取文本文件(默认值)
# b 读取二进制文件

# t b是和r w a 加在一起的,它们都是mode的参数

with open(file_name,'rb') as file_obj :
	'''
	读取图片DD.jpg的二进制代码,再写入到picture.jpg中

	'''
	# 读取文本文件时,size是以字符为单位的
	# 读取二进制文件时,size是以字节为单位的
	# print( file_obj.read(100) )

	new_name = 'picture.jpg' 

	with open( new_name ,'wb' ) as new_obj :

		chunk = 1024*100 # 每次读取的大小

		while True :
			content = file_obj.read(chunk) # 中间变量,存储读出来的信息

			if not content :
				# 读取为空,读取完毕
				break

			new_obj.write( content ) # 写入

文件读取位置

  • seek( )tell( ) 方法调整、查看指针位置
# seek( )和tell( )
with open('demo.txt','rb') as file_obj :
	# print( file_obj.read(100) )
	# print( file_obj.read(20) )

	# seek( offset[, whence] )方法可以修改当前读取(指针)的位置
	# seek有两个参数:
	#     第一个参数offset是相对于某个位置向后的偏移量,可以为负值,位置由第二个参数决定
	#     第二个参数是计算位置方式
	#         whence=0(默认值),从开头向后;
	#         whence=1,从当前位置向后;
	#         whence=2,相对于文件末尾移动,通常offset取负值

	file_obj.seek(10)
	print( '当前指针在:',file_obj.tell() )
	print( file_obj.read(3) )

	file_obj.seek(20,1)
	print( '当前指针在:',file_obj.tell() )
	print( file_obj.read(3) )

	file_obj.seek(-10,2)
	print( '当前指针在:',file_obj.tell() )
	print( file_obj.read(10) )

	# tell( )方法可以用来查看当前读取(指针) 的位置
	print( '当前指针在:',file_obj.tell() )

print('- '*20,'我是华丽的分割线',' -'*20)

# 读取中文时
with open('demo2.txt','rt',encoding = 'utf-8') as file_obj :

	seek_size = 3
	file_obj.seek(seek_size) 
	# seek_size是以字节为单位,一个完整中文是三个字节,
	# 	所以必须为保证文字的完整,否则会报错

	read_size = 2
	print( file_obj.read(read_size) ) 
	# 因为此时读取的是文本文件('rt',t是文本文件),
	# 	所以read_size是以字符为单位,一个中文就是一个字符

	print( '当前指针在:',file_obj.tell() )
	# 此时指针位置为9,3+2*3=9


文件的其他操作

  • listdir()返回目录信息
  • getcwd( )获得目录信息
  • chdir( ) 切换到目录
  • mkdir( )创建目录
  • remove( ) 删除目录
  • rename( )重命名和移动一个文件的路径
import os
from pprint import pprint
# 从 pprint 模块中引入 pprint 方法

# os.listdir( path = '.' ) 
# 需要一个路径作为参数,会获取该路径下的目录结构,默认值是当前目录,
# 返回一个目录结构的列表,每一个文件(夹)都是表中的一个元素
r = os.listdir( )
pprint( r )

# os.getcwd( ) 获取当前所在目录
r = os.getcwd( )
print( r ) 

# os.chdir( path ) 切换当前所在目录
# 需要一个路径作为参数,会切换到该路径下

os.chdir('..') # 去到上级目录

r = os.getcwd( )
print( r ) 

# os.mkdir('path\\name') 创建目录(文件夹)
# 参数如果直接是文件夹名,就会在当前目录下创建
# 也可以是路径+文件夹名,指定路径下创建
os.mkdir('aa') 
os.mkdir('06.异常和文件/aa') 

# os.remove( ) 删除目录
# 参数同上
os.rmdir('aa') 
os.rmdir('06.异常和文件/aa') 


os.chdir('06.异常和文件')
# 先回到 06.异常和文件目录下
open('a.txt','x' ) # 创建a.txt文件

# os.remove( ) 删除文件
# 参数都可以是路径+文件名
os.remove('a.txt')


# os.rename('旧名字','新名字') 可以重命名和移动一个文件路径
# 两个参数都可以是路径+文件名
# open('aa.txt','x' ) 
os.rename('aa.txt','bb.txt')

猜你喜欢

转载自blog.csdn.net/weixin_44011689/article/details/90142410