python文件操作

python文件操作

目录:

1.文件读写  #文件两种类型(文本、二进制)

  读写文本文件:read  全部读出,read(n) 一次读n  w:写   r:读

  读写二进制文件(案例:读取图片、视频拷贝(边读边写)):rb 读  、wb 写、ab 追加

2.文件与目录的操作(os、shutil模块)

  查看当前目录:os.getcwd()

  切换目录:os.chdir()

  显示当前目录下的内容:os.listdir()

  判断是目录还是文件:目录:os.path.isdir     文件:os.path.isfile

  新建目录:新建多级目录:os.makedirs      新建单个目录:os.mkdir

  删除目录:os.rmdir #只能删除空目录      shutil.rmtree:删除目录(包括非空目录)

  移动文件:shutil.move

  复制文件:shutil.copy #只复制文件内容     shutil.copy2 #复制文件所有,包括修改的时间等

3.文件序列化(pickle、shelve、json模块) 

  

1.文件读写

  1.1读写文本文件

#文本文件读写#文件写w:import oswith open('1.txt','w') as f: #文件名可写相对路径,也可写绝对路径;在当前文件下创建了1.txt f.write('胜多负少') f.write('12365') ##python写文件时默认按自身的操作系统编码,中文———GBK 英文————utf-8 f.write('fsfsdf')with open('2.txt','w',encoding='utf-8') as f: #编码:以ANSI格式编码(默认) f.write('胜多负少\n') f.write('12365\n') f.write('fsfsdf\n')#文件读r:with open('2.txt','r',encoding='utf-8') as f: txt=f.read(2) #一次读2个字符,默认全读 print(txt) t2=f.read() #会接着上面读过的位置开始往下读 print(t2)with open('2.txt','r',encoding='utf-8') as f: t3=f.readlines() #readlines()按行读取,读取完以列表的形式显示 print(t3)with open('2.txt','r',encoding='utf-8') as f: t4=f.readline() #readline()按行读取,一次读取一行 print(t4)#文件追加a:with open('2.txt','a',encoding='utf-8') as f: f.write('胜多负少\n') f.write('12365\n') f.write('fsfsdf\n')with open('2.txt',encoding='utf-8') as f: while True: #循环遍历出文件内容,一次读取一行 txt=f.readline() if txt: #读取的文件不为空继续打印,当读取的内容为空时(即为假),跳出循环 print(txt) else: break

  1.2读写二进制文件

#二进制文件操作print('1.读写二进制文件')  '''with open('1.jpg','rb') as f:   #读取图片    t=f.read(3) #分析图片的二进制格式(用二进制工具打开),可以看到,jpg图片的标识头为:ffd8ff    if t==b'\xff\xd8\xff':        print('这是一个图片')    print(t,type(t))with open('1.jpg','rb') as f:    t=f.read()with open('2.jpg','wb') as f:    f.write(t)'''#视频拷贝(边读边写)with open('1.mp4','rb') as f:    with open('2.mp4','ab') as f2:        while True:            txt=f.read(1024)            if txt:                f2.write(txt)            else:                print('文件拷贝完毕!')                break

2.文件与目录的操作(os、shutil模块)

#python 文件与目录操作import os,shutilprint('查看当前目录:')print(os.getcwd())print('切换目录:')os.chdir('F:\\pythonstudy')print(os.getcwd())print('显示当前目录下的内容:')print(os.listdir()) #显示当面目录下的所有文件,以列表的形式显示print(os.listdir('F:\\pythonstudy\\lesson7')) #显示指定目录下的内容print('判断是目录还是文件:') #返回True或者Falseprint(os.path.isdir('lesson7'))print(os.path.isfile('lesson7\\1.txt'))print(os.path.isdir('lesson7\\1.txt'))#新建目录mkdir/makedirs:print('创建目录mkdir/makedirs:')#os.mkdir('999') #mkdir创建单个目录#os.makedirs('888/666/22') #makedirs创建多级目录#删除目录#os.rmdir('999') #rmdir只能删除空目录#shutil.rmtree('888') #rmtree可以删除非空目录#删除文件#os.remove('ss.txt')#移动文件#shutil.move('dd.txt','F:\\pythonstudy\\lesson7')#shutil.move('1.jpg','2.jpg') #改名#复制文件print(os.chdir('F:\\pythonstudy\\lesson7'))shutil.copy('dd.txt','ff.txt')shutil.copy2('dd.txt','mm.txt')#组合路径path='F:\\pythonstudy\\lesson7'f='1.jpg'print(os.path.join(path,f))#拆分路径#以文件目录拆分(默认以最后一个'\\'分隔)print(os.path.split('F:\\pythonstudy\\lesson7\\1.jpg'))#以盘符进行拆分print(os.path.splitdrive('F:\\pythonstudy\\lesson7\\1.jpg'))

3.文件序列化(pickle,shelve,json模块)

pickle: 

  只能用二进制读写,python下所有的类型都可存  缺点:只支持同版本,不能跨平台

  pickle可以把对象以文件的形式存放在磁盘,

  pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化。

  pickle序列化后的数据,可读性差,人一般无法识别

  pickle.dump(obj, file[, protocol]),序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。             protocol的值还可以是1或2,表示以二进制的形式序列化。

  pickle.load(file),反序列化对象。将文件中的数据解析为一个Python对象

import random import pickle'''#使用pickle模块将数据对象保存到文件import  pickledata1={'a':[1,2.0,3,4],        'b':('string',u'sdfsf'),        'c':None} with open('data.pkl','wb') as f:    pickle.dump(data1,f)#获取保存文件的内容with open('data.pkl','rb') as f:    b=pickle.load(f)    print(b)''''''    print('1.pickle模块')try:    with open('cjb','rb') as f:        cjb=pickle.load(f)        print('结果已加载')except FileNotFoundError:    cjb=[]for i in range(5):    name=input('name:')    cj=random.randint(50,100)    cjb.append([name,cj])print(cjb)with open('cjb','wb') as f:    pickle.dump(cjb,f)    print('结果已保存')'''

shelve:

  在shelve模块中,key必须为字符串

  pickle和json可以dump多次但只能load一次(因为先前的数据已经被后面dump的数据覆盖掉了),如果想要实现dump多次不被覆盖,就可以想到使用shelve模块

import shelveimport datetime'''#数据存储(数据持久化)info = {'name': 'bigberg', 'age': 22}name = ['Apoll', 'Zous', 'Luna']t=datetime.datetime.now()with shelve.open('shelve.txt') as f: f['name']=name #持久化列表 f['info']=info #持久化字典 f['time']=t #持久化时间类型'''#数据读取(get获取数据)with shelve.open('shelve.txt') as f: n=f.get('name') i=f.get('info') now=f.get('time')print(n)print(i)print(now)'''

json:

  将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据

  JSON的数据格式其实就是python里面的字典格式

  json.dumps()把一个Python对象编码转换成Json字符串

  json.loads()把Json格式字符串解码,转换成Python对象

  元组(被转换成列表),集合不能被json序列化,所有key必须都是字符串(强行转,易失真);

  转出来都是字符串;常用来处理字典

  json处理整数、小数、字符

  

  json处理元组,元组被转换为列表

  

  json不能处理集合

  

  json处理字典,字典的key会被转换为字符串

  

  json.dump,json.load的用法

import jsonstr1='安抚家属的快感的降幅高达'str2='123'str3=1.23str4=[1,2,3]str5=(3,6,8)str6={'x':1,'y':2}str7={1:'a',2:'b'}'''with open('123.txt','w') as f:    json.dump(str1,f)   #汉字存储是以unicode编码存储  with open('123.txt') as f:    print(json.load(f))'''  '''with open('123.txt','w') as f:    json.dump(str2,f)   with open('123.txt') as f:    print(json.load(f))'''with open('123.txt','w') as f:    json.dump(str3,f)   with open('123.txt') as f:    print(json.load(f))'''

'''
with open('123.txt','w') as f:
json.dump(str5,f) #元组被序列化会被转成列表,然后存储

with open('123.txt') as f:
print(json.load(f)) #元组反序列化的结果是列表
'''

(0)

相关推荐

  • python3常用标准库

    python3常用标准库 趁着有时间,把一些我用过的常用标准库进行整理和复习. time 用法 说明 time.time() 返回时间戳(从1970年1月1日00:00:00开始计算) time.lo ...

  • Python十大文件骚操作!!

    来源:Python数据科学 作者:东哥起飞 日常对于批量处理文件的需求非常多,用Python写脚本可以非常方便地实现,但在这过程中难免会和文件打交道,第一次做会有很多文件的操作无从下手,只能找度娘. ...

  • python IO编程(文件读写、StringIO和BytesIO、操作文件和目录、序列化)

    学习目标: python学习十二. 学习内容: 1.文件读写 2.StringIO和BytesIO 3.操作文件和目录 4.序列化 1.文件读写 读写文件就是请求操作系统打开一个文件对象(通常称为文件 ...

  • [干货分享]Python文件操作技巧总结

    原创 我的果果超可爱 脉冲功率实验室 1周前收录于话题#数学建模3#数据分析6#科技8#Python5#编程6引言小伙伴们,今天给大家讲解一下python程序下的文件操作完整技巧梳理,都是笔者总结的干 ...

  • 「程序员必看」超详细的Python文件操作知识

    本文分七个模块为大家详细介绍python中文件操纵相关知识,闲话少说,让我们开始! 一.文件的打开和关闭 open()函数 f1 = open(r'd:\测试文件.txt', mode='r', en ...

  • 硬肝!超详细的Python文件操作知识

    重磅干货,第一时间送达 [导语]:python进行文件操作,在日常编程中是很常用的.为了方便大家,这里对各种文件操作的知识进行汇总.一文在手,无须它求!来一起学习吧.--- 以下是正文 ---本文分七 ...

  • 超详细的Python文件操作知识

    来源:南枝向暖北枝寒MAhttps://blog.csdn.net/mall_lucy/article/details/104547365[导语]:python进行文件操作,在日常编程中是很常用的.为 ...

  • Python骚操作,提取pdf文件中的表格数据!

    在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...

  • Python No.19_文件操作(增删改查)

    # !/usr/bin/env python# -*- coding:utf-8 -*-# Author:Hugolinhj '''对文件的操作流程1.打开文件.得到文件句柄并赋值给一个变量2.通过句 ...

  • 5分钟看懂Python之Excel文件操作

    我们在工作生活中我们经常会遇到各种各样的Excel文件,也需要对这些文件进行相关的数据处理,Python有种类繁多的库,可以帮助我们做到这一点,例如openpyxl.pandas.xlsxwriter ...

  • 【Python】如何用Python来操作PDF文件,建议收藏

    今天这篇文章,我们不谈热点,毕竟最近谈论的热点有点多了,也有点腻了,我们来讲一些Python运用实践当中的小技巧,用Python来操作和处理PDF文件,通过本篇文章,读者朋友大概会学会 1. 通过Py ...

  • 收藏|Python办公自动化不得不会的十大文件操作!

    日常对于批量处理文件的需求非常多,用 Python 写脚本可以非常方便地实现,但在这过程中难免会和文件打交道,第一次做会有很多文件的操作无从下手,只能找度娘 本篇文章整理了 10 个 Python 最 ...