文件操作

体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。只不过因为RAM是其中最重要的存储器。
通常所说的内存即指电脑系统中的RAM。RAM要求每时每刻都不断地供电,否则数据会丢失。
如果在关闭电源以后RAM中的数据也不丢失就好了,这样就可以在每一次开机时都保证电脑处于上一次关机的状态,而不必每次都重新启动电脑,重新打开应用程序了。
但是RAM要求不断的电源供应,那有没有办法解决这个问题呢?随着技术的进步,人们想到了一个办法,即给RAM供应少量的电源保持RAM的数据不丢失,这就是电脑的
休眠功能,特别在Win2000里这个功能得到了很好的应用,休眠时电源处于连接状态,但是耗费少量的电能。

文件IO常用操作

打开操作

open的参数

file

mode***

a

字符流:<_io.TextIOWrapper name='test1' mode='r+' encoding='cp936'>
字节流:<_io.BufferedRandom name='test1'>

注意在windows(cp936:双字节编码)下面以二进制读取文件和在linux(utf-8::三字节编码)下面以二进制读取文件时因为编码格式不同,其读取出来的数据也会不同。

上述原因与文件指针有关!

 文件指针***

文件指针,指向当前字节位置

seek无论是在二进制模式下还是在文本模式下,seek指的都是偏移字节!

buffering:缓冲区

-1表示使用缺省大小的buffering,如果是二进制模式,使用io.DEFAULT_BUFFER_SIZE,默认是4096。
缓冲是一个可选的整数,用于设置缓冲策略。传递0以关闭缓冲(仅在二进制模式下允许),1选择行缓冲(仅在文本模式下可用),以及整数>1以字节表示固定大小块缓冲区的大小。
二进制文件以固定大小的块缓冲;在许多系统上,缓冲区通常是4096或8192字节长。 一般来说,默认缓冲区大小是个比较好的选择,除非明确知道,否则不调整它。
一般编程中,明确知道需要写磁盘了,都会手动调用一次flush,而不是等到自动flish或者close的时候。

 encoding:编码,仅文本模式下使用

其他参数

read

#文本模式
f = open('tttt','r+')
f.write("magedu")
f.write("妈个教育")
f.seek(0)
print(f.tell())#
print(f.read(7))# magedu妈
print(f.tell())#
f.close()
#二进制
f = open('tttt','rb+')
f.write(b"magedu")
f.read(7)
print(f.tell())#
f.read(1)
print(f.tell())#
f.close()

行读取

write

close

其他

 上下文管理

在Linux中,执行

 

 上下文管理

另一种写法

练习1

#下面是最简单的一种拷贝,但是只是拷贝了原文件的内容!
with open('test.txt',encoding='utf-8') as f1:
with open('test2.txt','w',encoding='utf-8') as f2:
s = f1.read()
f2.write(s)

练习2

#初步思想:常规统计方法
def wordcount2(file='test2.txt'):
chars='''~!@#$%^&*()_+{}[]|\\/"';:=.,<>'''
charset = set(chars) with open(file,encoding='utf-8') as f:
wordcount={}
for line in f:
words = line.split()
# for k,v in zip(words,(1,)*len(words)):同下
for k,v in map(lambda x:(x,1),words):
k = k.strip(chars)
if len(k)<1:
continue
k = k.lower()
#处理一些特殊的分隔符,如 c:foo ==> c,foo; 3.5.3 ==> 3,5,3; a///b ==> a,b
start = 0
for i,value in enumerate(k):#i=1 start=0
if value in charset:
if start == i:
start += 1
continue
key = k[start:i]
wordcount[key] = wordcount.get(k, 0) + 1
start = i+1
else:
key = k[start:]
wordcount[key] = wordcount.get(k, 0) + 1 #按照TOP N 排序得到前十的单词
lst = sorted(wordcount.items(),key=lambda x:x[1],reverse=True)
for i in range(10):
print(str(lst[i]))#.strip("'()").replace("'",""))
return lst

Python进阶4---Python的文件IO的更多相关文章

  1. Python学习(15)文件/IO

    目录 Python 文件I/O 打印到屏幕 读取键盘输入 打开和关闭文件 File对象属性 文件定位 重命名和删除文件 Python的目录 Python 文件I/O 本章只讲述所有基本的的I/O函数, ...

  2. python进阶之路之文件处理

    Python之文件处理 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !imp ...

  3. python进阶--打包为exe文件

    一.Python打包为EXE文件有不少方案,比较常用的有下面两种方式: 1.使用py2exe 详细介绍:http://www.cnblogs.com/jans2002/archive/2006/09/ ...

  4. python进阶(4)文件操作

    文件操作 文件操作主要包括对文件内容的读写操作,这些操作是通过文件对象实现的,通过文件对象可以读写文本文件和二进制文件 open(file, mode='r', buffering=-1, encod ...

  5. Python Cookbook3 Python进阶教程 http://python3-cookbook.readthedocs.io/zh_CN/latest/copyright.html

    http://python3-cookbook.readthedocs.io/zh_CN/latest/copyright.html

  6. python进阶:Python进程、线程、队列、生产者/消费者模式、协程

    一.进程和线程的基本理解 1.进程 程序是由指令和数据组成的,编译为二进制格式后在硬盘存储,程序启动的过程是将二进制数据加载进内存,这个启动了的程序就称作进程(可简单理解为进行中的程序).例如打开一个 ...

  7. python 进阶篇 python 的值传递

    值传递和引用传递 值传递,通常就是拷贝参数的值,然后传递给函数里的新变量,这样,原变量和新变量之间互相独立,互不影响. 引用传递,通常是指把参数的引用传给新的变量,这样,原变量和新变量就会指向同一块内 ...

  8. Python进阶5---StringIO和BytesIO、路径操作、OS模块、shutil模块

    StringIO StringIO操作 BytesIO BytesIO操作 file-like对象 路径操作 路径操作模块 3.4版本之前:os.path模块 3.4版本开始 建议使用pathlib模 ...

  9. Python文件IO

    Python文件IO 有如下文本内容,文件路径为D:\temp,文件名称为lyric.txt, line1 Look ! line2 If U had one shot line3 One oppor ...

随机推荐

  1. js正则表达式 数字和小数点 非负数 保留两位小数点

    验证数字非负数  小数点保留两位小数点 下面正则已验证通过 /^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/

  2. MongoDB:数据库介绍与基础操作

    二.部署在本地服务器 在上次的学习过程中,我们主要进行了MongoDB运行环境的搭建和可视化工具的安装.此次我们将学习MongoDB有关的基本概念和在adminmongo上的基本操作.该文档中的数据库 ...

  3. 南京邮电大学java程序设计作业在线编程第八次作业

    程序设计类课程作业平台 王利国 主页 教学资源 我的作业列表 程序设计课 账户 王利国的"Java语言程序设计第8次作业(2018)"详细 主页 我的作业列表 作业结果详细 总分: ...

  4. python开发规范和(configparser、random模块)

    目录结构: bin:存放程序入口,程序启动文件. conf:存放配置文件,配置文件主要是一些全局变量,路径信息等. core:程序核心文件,不涉及到业务逻辑. app:存放和系统业务相关的逻辑. db ...

  5. OV摄像头图像采集基础知识总结

    目前FPGA用于图像采集 传输 处理 显示应用越来越多,主要原因是图像处理领域的火热以及FPGA强大的并行处理能力.本文以OV7725为例,对摄像头使用方面的基础知识做个小的总结,为后续做个铺垫. 下 ...

  6. Ubuntukylin 14.04 系统语言改成中文[转]

    1.在左侧点击"system setting" 2.按在图中方法设置 3.重启系统   参考地址:http://hi.baidu.com/thj2080/item/ae8e5dce ...

  7. 统计 flv视频总时长

    在学习孟媛的视频课程.网上能下载的是flv格式.那我在学习之前,我要统计一下这个课程的数量,他会用多长时间,这样方便我在学习过程中不断的回顾,进行时间管理.我大概就可以统计出来这个视频多长时间可以学完 ...

  8. hashlib模块

    老师博客:http://www.cnblogs.com/Eva-J/articles/7228075.html#_label12 摘要算法 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个 ...

  9. 超哥笔记--shell 基本命令(4)

    一 linux 命令行的组成结构 自定义命令行结构 PS1变量来控制 \u \W 最后一位工作目录 \w 绝对路径工作目录 \t 显示24h制的时间 \h PS1="[\u@\h \w \t ...

  10. 【Python 17】B分R计算器1.0(数值类型)

    1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...