1 文件读写

1.1 打开文件:

open(r'D:\text.txt')

1.2 文件模式

功能描述
‘r’ 读模式
‘w’ 写模式
‘a’ 追加模式
‘b’ 二进制模式
‘+’ 读写模式

1.3 文件缓冲区

1.4 文件读取

  • 使用try ...finally来保证程序的健壮性

  • 使用with语句代替try finally和close方法

    with open(r'd:\text.txt','r') as fileReader:

    print fileReader.read()

  • 调用readline()可以每次读取一行内容

    with open(r'd:\text.txt','r') as fileReader:

    for line in fileReader.readline():

    print fileReader.read()

1.5 文件写入

2 操作文件和目录

3 序列化操作

* 将内存中的变量序列化之后,可以把序列化的内容 写入磁盘,或者通过网络传输到别的机器上,实现程序状态的保存和共享,反之为反序列化

* python 提供两个模块:cPickle和pickle来实现序列化,两个模块功能和函数一样,前者运行效率高,使用c语言,不用pip安装,本身自带

* pickle实现序列化主要使用的是dumps方法或dump方法,dumps方法可以将任意对象序列化成一个str,然后将str写入文件进行保存

>>> import cPickle as pickle
>>> d = dict(url='index.html',title='home',content='home')
>>> pickle.dumps(d)
"(dp1\nS'content'\np2\nS'home'\np3\nsS'url'\np4\nS'index.html'\np5\nsS'title'\np
6\ng3\ns."
>>> * 如果使用dump方法,可以把序列化对象存在文件中 >>> f =open(r'D:\text.txt','wb')
>>> pickle.dump(d,f)
>>> f.close()
>>> * pickle反序列使用loads或load方法,可先从文件取出放在str,在调用load,或者直接从文件load >>> f =open(r'D:\text.txt','rb')
>>> d = pickle.load(f)
>>> f.close()
>>> d
{'content': 'home', 'url': 'index.html', 'title': 'home'}
>>>

3 进程和线程

3.1 多线程

  • python可以使用os模块和multiprocessing模块实现多线程,后者可以跨平台,前者只能在Unix/linux操作系统上运行

3.1.1 使用os模块中的fork方式实现多线程

   import os
print os.getpid() #获取子进程的进程号
pid = os.fork()
if pid == 0 :
print 'I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid())
else :
print 'I (%s) just created a child process (%s).' % (os.getpid(), pid)

3.1.2 使用multiprocessing模块创建多线程

from multiprocessing import Process  #导入Process模块
import os
def test(name):
'''
函数输出当前进程ID,以及其父进程ID。
此代码应在Linux下运行,因为windows下os模块不支持getppid()
'''
print "Process ID: %s" % (os.getpid())
print "Parent Process ID: %s" % (os.getppid())
if __name__ == "__main__":
'''
windows下,创建进程的代码一下要放在main函数里面
'''
proc = Process(target=test, args=('nmask',))
proc.start()
proc.join()

3.1.3 multiprocessing提供一个pool类来代表进程池

#!code:utf-8
from multiprocessing import Pool
import os,time,random def run_task(name):
print('Task %s is running ....')
time.sleep(random.random()*3)
print('Task %s end' %name) if __name__ == '__main__':
print 'Current process this,'
p = Pool(processes=3)
for i in range(5): #运行5个任务,但pool只允许3个进程,其余等待
p.apply_async(run_task,args=(i,))
print 'Waiting for all subprocesses done'
p.close() #close必须在join之前运行,调用close之后就不能再添加新的Process了
p.join()
print('All subprocesses')
  • 运行结果:

python的I/O编程:文件打开、操作文件和目录、序列化操作的更多相关文章

  1. ca76a_c++_流文件打开输入输出文件模式p773

    /*ca76a_c++_流文件打开输入输出文件模式利用文件流打开文件进行输入与输出时的选项in.out.app(附加模式).ate((end)文件打开后,定于文件结尾).trunc(裁剪).binar ...

  2. 【转】python qt(pyqt)的文件打开、文件保存、文件夹选择对话框

    import PyQt4.QtCore,PyQt4.QtGui # 获取文件路径对话框 file_name = QFileDialog.getOpenFileName(self,"open ...

  3. Python 安装zbar-py时出现 无法打开包括文件: “unistd.h” no such file or directory

    问题 途中使用的命令是cl.exe,在执行命令的时候找不到对应的unistd.h文件. unistd.h是Unix系统的文件,因此,十有八九,使用的是Windows系统.下面的代码可以修复,但是如果修 ...

  4. Python open()函数文件打开、读、写操作详解

    一.Python open()函数文件打开操作 打开文件会用到open函数,标准的python打开文件语法如下:open(name[,mode[,buffering]])open函数的文件名是必须的, ...

  5. python基础知识-7-内存、深浅、文件操作

    python其他知识目录 1.一些对内存深入理解的案例 以下列举列表,列表/字典/集合这些可变类型都是一样的原理 变量是个地址,指向存储数据的内存空间的地址,它的实质就相当于c语言里的指针.变量和数据 ...

  6. Python之路【第三篇】:文件操作

    一.文件操作步骤 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 歌名:<大火> 演唱:李佳薇 作词:姚若龙 作曲:马奕强 歌词: 有座巨大的停了的时钟 倾倒在赶 ...

  7. PHP文件操作 之打开远程文件

    //配置php.ini 开启allow_url_fopen选项 //访问的文件有可读或者可写的权限 //$f = fopen('http://www.example.com/a.txt','rb'); ...

  8. python之最强王者(10)———文件(File)、输入输出的基本操作

    1. Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 2.打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式. ...

  9. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public sta ...

  10. C#使用ICSharpCode.SharpZipLib.dll压缩文件夹和文件

    大家可以到http://www.icsharpcode.net/opensource/sharpziplib/ 下载SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, ...

随机推荐

  1. D - A or...or B Problem

    题意:给定A,B,问[A,B]里取任意个数按位或,结果有多少种. 思路:这题需要找出一个分界点,即找到最高位的B是1,A是0的位置x(最低位从0开始),那么对于所有OR的结果,x处要么是1要么是0,x ...

  2. 配置LANMP环境(6)-- 安装APACHE与PHP配置

    一.安装 Apache 2.4 安装:默认安装2.4版本 yum install httpd 修改配置 vim /etc/httpd/conf/httpd.conf 42行80端口改为 8080查看行 ...

  3. netty-4.客户端与服务端心跳

    (原) 第四篇,客户端与服务端心跳 心跳事件有三种,读空闲,写空闲,读写空闲,定义在了IdleState枚举类中,分别为READER_IDLE,WRITER_IDLE,ALL_IDLE 服务端: ma ...

  4. JavaScript对象原型

    一.MDN上的解释(有点抽象) 基于原型的语言? JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模 ...

  5. jar包上传本地maven仓库

    执行mvn install:install-file -Dfile=D:\software\jave-1.0.2\jave-1.0.2\jave-1.0.2.jar -DgroupId=it.saur ...

  6. HDU 6035 - Colorful Tree | 2017 Multi-University Training Contest 1

    /* HDU 6035 - Colorful Tree [ DFS,分块 ] 题意: n个节点的树,每个节点有一种颜色(1~n),一条路径的权值是这条路上不同的颜色的数量,问所有路径(n*(n-1)/ ...

  7. webpack5持久化缓存

    Opt-in webpack 旨在注重构建安全而非性能.我们没有打算默认启用这一功能,主要原因在于此功能虽然有 95% 几率提升性能,但仍有 5% 的几率中断你的应用程序/工作流/构建. 什么是缓存失 ...

  8. 有效的结构化思维训练,MECE分析法

    MECE原则,表达精准分类与全面性的有效利器 结构化思维的本质就是逻辑,其目的在于对问题的思考更完整.更有条理,它帮助我们一个一个找到线头,理清思路,探求事物之间的相互联系.MECE分析法是一种结构化 ...

  9. 简单的尝试下angr

    0x00:前言 之前接触到了符号执行,可以用于程序的自动化分析,感觉还是比较神奇,工业上的具体用法不是很清楚,不过在CTF中这个东西慢慢在流行...从defcon 2016就可以看出(有很多人解re用 ...

  10. 51 Nod 1163 最高的奖励

    1163 最高的奖励  基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成 ...