Python基础笔记系列十一:标准输入输出、文件读写和指针等操作
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!!
- 标准输入输出
一、输入
在sublime中这个时候需要安装SublimeREPL插件。 Ctrl+shift+p 键入 install packages,再继续键入 SublimeREPL 安装即可然后每次编译运行的操作是:tools->sublimeREPL->python->python-Run current file。点击之后会出现新的页面*REPL*[python],作为新的控制台,可以输入输出互动。可查看另一篇,传送门:Python基础笔记系列四:工具的安装与配置
1)使用raw_input()函数buff = raw_input('please input :') #不管输入什么都是字符串类型
print buff
print type(buff)2)使用input()函数
buff2 = input('please input :') #输入如果为数字就是int型
print buff2
print type(buff2)二、输出
最简单的输出方法是print语句,你可以给它传递零个或多个逗号隔开的表达式,或者使用占位符。
例子:num =200
print 1,3,5,'num=%d'%num输出:
1 3 5 num=200
文件读写
一、打开和关闭文件
首先要对文件进行操作就要先打开一个文件,以创建file对象,然后才能对它进行读写等操作。#1.打开:使用open函数
#2.关闭:使用close函数:刷新缓冲区里任何还没有写入的信息,并关闭文件,之后便不可再对该文件进行读写。
# 在close之前也可以调用flush方法刷新缓冲区
# fil = open(文件名,打开文件的模式,缓冲区), 其中后面两个参数可以省略,模式有读(r)、写(w)、追加(a)等,
#缓冲区(等于0:不会寄存,等于1:寄存一行,大于1:寄存区的缓存大小,小于0:系统默认缓冲区大小)
二、读取文件
在以‘r’模式打开文件以后可以调用read函数一次性将文件里的内容全部读取出来,也可以每次指定读取多少字节。
例子:fil1 = open('yyc.txt','r',-1) #读 文件必须存在(目前是当前目录下)
# buff3 =fil1.read() #一次性读完
buff4 =fil1.read(100) #读100个字节
# print buff3+","+buff4 #这里如果先read()再read(100) 则buff4为空,因为read()已经读完整个文件了,就像c中指针已经到最后了。可以通过fil1.tell()函数打印指针当前位置
print buff4
fil1.close() #关闭文件三、写文件
可以通过‘w’的方式打开文件,就可以创建一个可以写的文件对象。如果文件存在则清空文件再写,如果文件不存在则创建。
例子:fil = open('yyc.txt','w',-1) #写 如果文件存在则清空文件再写,如果文件不存在则创建
fil.write("123456hello")
fil.flush() #写完最好刷新一下
fil.close() #关闭文件四、读写文件r+、w+
'r'模式打开的文件创建的对象只能用read函数读取文件的内容,‘w’模式打开的文件又只能往里写内容。如果想实现在一个文件关闭前既可以往里写内容,又可以读取内容怎么办呢?这就是‘r+’和‘w+’所实现的功能。但是个人还是建议在一个文件打开关闭期间要么读要么写,因为这样子会出现很奇怪的问题,可仔细阅读下面的例子:
‘w+’模式例子1:如果在打开文件和关闭文件之间先执行写操作然后读操作,最后读出的内容为空。#先写后读
fil5 = open('yyc.txt',"w+",0) #既写又读 如果文件存在则先清空文件,如果文件不存在则创建
fil5.write('b') #先写入
fil5.flush() #写完最好刷新一下
buff2 =fil5.read() #因为此时指针指向写入内容的后面,所以内容为空
print 'w+模式先写后读: '+buff2 #读出的内容是未覆盖的内容,这里为空啦,因为此时指针指向写入内容的后面,即文档末尾
fil5.close()‘w+’模式例子2:如果在打开文件和关闭文件之间先执行读操作然后写操作,读出的内容也为空。
#先读后写
fil5 = open('yyc.txt',"w+",0) #既写又读 如果文件存在则先清空文件,如果文件不存在则创建
buff2 =fil5.read() #由于清空了文件,所以内容为空
print 'w+模式先读后写: '+buff2 #读出的内容是未覆盖的内容,这里还没写写入,所以为空
fil5.write('') #
fil5.flush() #写完最好刷新一下
fil5.close()从上面两个例子可以看出,在以‘w+’模式打开文件并同时执行读写操作时,不管是先写后读还是先读后写,读出的内容都是空,但是其中的道理各有不同哦(代码注释里差不多也清楚了)。
‘r+’模式例子1:如果在打开文件和关闭文件之间先执行写操作然后读操作,读出的内容是写入后未覆盖的内容#先写后读
fil3 = open('yyc.txt',"r+",-1) #既读又写 从文件开始位置覆盖内容
fil3.write('')
fil3.flush() #写完最好刷新一下
buff2 = fil3.read() #必须先刷新再做读操作,
print 'r+模式先写后读:'+buff2 #读出的内容是未覆盖的内容,因为指针在写入文件后指向了写入后的位置,即文档末尾
fil3.close()'r+'模式例子2:如果在打开文件和关闭文件之间先执行读然后写操作,运行报错。
#先读后写(报错)
# fil3 = open('yyc.txt',"r+",-1) #既读又写 从文件开始位置覆盖内容
# buff2 = fil3.read() #先读
# print 'r+模式先读后写:'+buff2 #输出的内容是覆盖后的内容,也就是说他执行过write了?很奇怪,并且报错
# # fil3.flush() #加不加效果一样
# fil3.write('66666')#后写
# fil3.flush() #写完最好刷新一下
# fil3.close()五、追加写入文件a,a+
如果想保留文件现有内容,只是把新内容加入原有文件的尾部或者说新增文件内容而不影响原有内容,则可以用a或者a+模式。
‘a+’模式例子1:如果在打开文件和关闭文件之间先执行写操作然后读操作,最后读出的内容为空。#先写后读
fil6 = open('yyc.txt','a+',0) #追加 如果文件存在则追加内容,如果文件不存在则创建
fil6.write('') #
fil6.flush() #写完最好刷新一下 ,查看文件写入成功
print 'a+模式先写后读: '+fil6.read() #但读出来是空,因为此时指针指向写入内容的后面
fil6.close() #关闭文件‘a+’模式例子2:如果在打开文件和关闭文件之间先执行读操作然后写操作,读出的内容也为为空。
#先读后写
fil6 = open('yyc.txt','a+',0) #追加 如果文件存在则追加内容,如果文件不存在则创建
print 'a+模式先读后写: '+fil6.read() #但读出来是空
fil6.write('') #
fil6.flush() #写完最好刷新一下 ,查看文件写入成功
fil6.close() #关闭文件综上6个例子,其实r+,w+,a+有异曲同工之处,也就是文件指针指向的位置,决定了读写的内容。只要理解了指针在文件中的位置,就不难理解文件的读写啦。
文件的基本属性
下面的例子中展示了文件的基本属性。
例子:#-----------文件属性-----------
fil = open('yyc.txt','a',-1) #追加
print fil.mode #返回被打开文件的访问模式
print fil.closed #是否已经关闭
print fil.name #返回被打开文件的名字
print fil.softspace #输出:
a
False
yyc.txt
0文件指针(seek方法)
前面说到w+模式的先写后读,打开文件为w+模式下时,如果文件存在则先清空文件,如果文件不存在则创建,在先写入文件后发现指针指向写入内容的后面,再来读取文件内容,则读出来的内容是空的,我们可以通过seek()函数将指针指向文件开始的位置再读。
例子:fil5 = open('yyc.txt',"w+",0) #既写又读 如果文件存在则先清空文件,如果文件不存在则创建
fil5.write('ppppppppp') #先写入内容
fil5.flush() #写完最好刷新一下,注意:此时指针在文档末尾
fil5.seek(0) #移动指针到文档开头
buff2 =fil5.read() #由于清空了文件,所以内容为空
print 'w+模式先写再移动指针最后读: '+buff2 #读出的内容是刚刚写入的内容
fil5.close()输出:
w+模式先写再移动指针最后读: ppppppppp
文件的删除和重命名
注意:需要导入os包或os包里的相应方法
1.重命名用os.rename(curret_file_name,new_file_name)方法:两个参数,当前文件名和新文件名
2.删除文件用os.remove(file_name)方法:一个参数,需要删除的文件名
Python基础笔记系列十一:标准输入输出、文件读写和指针等操作的更多相关文章
- Python基础笔记系列一:基本工具与表达式
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...
- Python基础笔记系列十:模块
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 模块 #1.类比于java中的jar包,模块能让你能够有逻辑地组织你的Py ...
- Python基础(十六):文件读写,靠这一篇就够了!
文件读写的流程 类比windows中手动操作txt文档,说明python中如何操作txt文件? 什么是文件的内存对象(文件句柄)? 演示怎么读取文件 ① 演示如下 f = open(r"D: ...
- Python基础笔记系列九:变量、自定义函数以及局部变量和全局变量
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 变量在前面的系列中也许就可以发现,python中的变量和C中的变量有些许不 ...
- Python基础笔记系列四:工具的安装与配置
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 一开始是没有打算写工具这篇的,后来发现在某些情况下会遇到一些奇怪的问题,这 ...
- Python基础笔记系列十四:python无缝调用c程序
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python语言可以对c程序代码进行调用,以弥补python语言低性能的缺 ...
- Python基础笔记系列十二:requests模块的简单应用
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! httpbin httpbin这个网站能测试 HTTP 请求和响应的各种信 ...
- Python基础笔记系列十三:socket网络编程
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!!使用python编写一个简易的服务端程序和客户端程序,启动服务端和客户端(监 ...
- Python基础笔记系列八:字符串的运算和相关函数
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字符串的运算1.字符串的加法和乘法 python中不但支持字符串相加,还支 ...
随机推荐
- Linux IPC之管道通信
2017-04-07 管道通信在linux中使用较为频繁的进程通信机制.基于unix一切皆文件的传统,管道也是一种文件.所以可以使用一般的VFS接口对管道进行读写操作,如read.write.具体管道 ...
- Oracle中查看建立索引和使用索引的注意点
一.查看和建立索引 select * from user_indexes where table_name = 'student' create index i_student_num on stud ...
- Python 能干什么
二.Python 只适合测试? 关于Python是一种什么样的语言,这里不打算说对象.类之类的术语.我们可以先来看一看,时至今日 Python 都在哪些领域里得以应用: 电信基础设施 (Twilio) ...
- 007-mac快捷键
锁屏:Ctrl + Command + Q touch-bar:方法:“系统偏好设置”>“键盘”>“自定Control Strip…”,将“锁定屏幕”图标拖拽到Touch Bar上即可.] ...
- GlusterFS部署
一.GlusterFS简介 PB级容量.高可用.读写性能.基于文件系统级别共享.分布式.无metadata(元数据)的存储方式. GlusterFS(GNU ClusterFile System)是一 ...
- Java Code Template
设置注释模板的入口:Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素 ...
- C++ error C2064:
error C2064: term does not evaluate to a function 错误原因,非函数,当成函数使用了
- Git在Githib和Github上的使用
本文使用的环境是linux里 一.git的常用命令解释: 1.基础命令: git init #创建版本库 git add <file> #将文件修改添加到暂存区 git commit -m ...
- django之路由(url)
前言: Django大致工作流程 1.客户端发送请求(get/post)经过web服务器.Django中间件. 到达路由分配系统 2.路由分配系统根据提取 request中携带的的url路径(path ...
- 常用RDD
只作为我个人笔记,没有过多解释 Transfor map filter filter之后,依然有三个分区,第二个分区为空,但不会消失 flatMap reduceByKey groupByKey() ...