文件对象 = open('文件名','使用方式')
rt:读取一个txt文件
wt: 只写打开一个txt文件,(如果没有该文件则新建该文件)会覆盖原有内容
at:打开一个txt文件,并从文件指针位置追加写内容(文件指针默认在末尾)
文件操作错误属于:I/O异常
通常的异常:

 try:
f = open('a.txt','wt')
except Exception as e:
print(e)

#文件的写操作
# 函数:   文件对象.write(s)其中s是待写入文件的字符串{文件对象需要时可写入的对象}

 try:
fobj = open('anc.txt','wt') #wt:可写入操作方式/at为在原有的文件内容追加写入
fobj.write('\nmore') #写函数
fobj.close() except Exception as err:
print(err) #结果:anc文件保存至当前目录下,并写入“[换行]more”

#案例:学生信息储存

 name = 'wanzi'
gender = '男'
age = 23
try:
f = open('students.txt','wt')
while True:
#s = Student(i)
#if s:
f.write("namegenderge")
ans = input("continue(Y/y):")
if ans != 'Y' and ans != 'y':
break
i = i+1
f.close() except Exception as e:
print(e)

#读文件操作  文件对象.read(n) //返回全部字符串或者n字节字符

 def writeFile():    #写文件操作
f = open('abc.txt','wt')
f.write("Hello world\nI am Code_boy\nMirror_") #三行数据(两个\n)
f.close() def readFile(): #读文件操作
f = open('abc.txt','rt')
sread = f.read() #文件内容读取 [如果read(n)有值,则读取n个字符,为空则读取全部]
print(sread) #将读取的内容打印输出
f.close() try:
writeFile() #调用写文件函数,写入文件
readFile() #调用读文件函数,读出(打印)文件内容
except Exception as e:
print(e) '''
结果:
Hello world
I am Code_boy
Mirror_
'''

#读文件操作 文件对象.readline()  //返回一行字符串(读取连续的字符串,遇到\n或文件末尾结束)

 def writeFile():
f = open('readline.txt','wt')
f.write('Hello\nworld')
f.close() def readlineFile():
f = open('readline.txt','rt')
sreadline = f.readline() #读取readline文件(只读一行)
print(sreadline,'len=',len(sreadline))
sreadline = f.readline()
print(sreadline, 'len=', len(sreadline))
sreadline = f.readline()
print(sreadline, 'len=', len(sreadline)) f.close()
try:
writeFile()
readlineFile()
except Exception as e:
print(e) 结果:
Hello #readline中的文件内容: Hello\nworld 结合readline的功能,在读取一行的数据
len= 6 # ‘Hello\n’ >>>> 共计6个字节(换行是因为读取了\n)
world len= 5 #如上类说明
len= 0 #文件指针已到达末尾,无法继续读出数据故 len = 0

# .readline()可以使用循环的方式(判断是否读取为空)来读取全部,一般都是使用读单行内容
#但是! .readlines(){加了一个‘s'}就可以直接读取全部数据:

 def writeFile():
f = open('readline.txt','wt')
f.write('Hello\nworld')
f.close() def readlinesFile():
f = open('readline.txt','rt')
sreadlines = f.readlines() #读取readlines文件(读全部行)并以list形式返回
#因为是以列表格式返回,所以一般情况下会配合循环(for)从readlines()提取每一行循环打印输出
for i in range(len(sreadlines)): #1号:利用for输出
print(sreadlines[i],end='') print(sreadlines) #读全部内容,并且每一行用'\n'(显示)隔开 #2号:直接输出
f.close() try:
writeFile()
readlinesFile()
except Exception as error:
print(error)
'''
1号结果:
Hello
world
2号结果:
['Hello\n', 'world'] #>>>也就是readlinese()读取数据的储存(list)形式
'''

#读取文件中的学生信息

 f = open('student1.txt','rt')
while True: name = f.readline().strip('\n')# *.strip()>>用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
if name == '':
break
gender = f.readline().strip('\n')
age = f.readline().strip('\n')
f.close()
print(name,gender,age)

#文件编码
#GBK编码:中文字符包含简体和繁体字符,每个字符仅能存储简体中文字符 汉字占二字节
#*UTF-8编码:全球通用的编码(默认使用)汉字占三字节
#文件打开时,可以指定用encoding参数指定编码例如:
#   f = open('x.txt','wt',encoding = 'utf-8')
# 文件编码直接决定了文件的空间大小

#案例:UTF-8文件编码

 def writeFile():
f = open('utf.txt','wt',encoding = 'utf-8')
f.write('Hello I am 王宇阳')
f.close() def readFile():
f = open('utf.txt','rt',encoding='utf-8')
sreadlines = f.readlines()
for i in sreadlines:
print(i)
f.close()
try:
writeFile()
readFile()
except Exception as error:
print(error) # 结果: Hello I am 王宇阳

#文件指针(文件结束标志:EOF)...文件对象.tell()[返回一个整数,整数则是指针的位置]

 f = open('zz.txt','wt',encoding='utf-8')
print(f.tell()) #指针位置:0
f.write('abcdef 你好')
print(f.tell()) #指针位置:13
f.close()
f = open('zz.txt','rt',encoding='utf-8')
f.tell() #文件指针归零
s = f.read(3)
print(s,f.tell()) #输出read读取内容并返回指针位置。读取大小和指针位置相符
f.close()
#结果:
0
13
abc 3

#操作指针...文件对象.seek(offset[,whence])
# offset:开始的偏移量,代表着需要偏移的字节数
# whence:[可选]默认值为‘0’,给offset参数一个定义,表示从那个位置开始偏移,0:文件开头 1:文件当前位置 2:文件末尾
#----注意,只有 “rt+ wt+ at+” 的打开方式可以调整指针,其他的打开方式不支持指针操作

 def writeFile():
f = open('zz1.txt','wt+',encoding='utf-8')
print(f.tell()) #返回初始指针位置 >>> 0
f.write('') #写入3字节内容
print(f.tell()) #返回当前(写入文件后的)指针位置
f.seek(2,0) #指针从开头位置偏移2字节即:1 2 . 3(点的位置)
print(f.tell()) #返回指针位置>>>2
f.write('abc') #从当前指针位置写入‘abc’(覆盖了‘3’)
print(f.tell()) #返回指针位置>>>5
f.close()
 def readFlie():
f = open('zz1.txt','rt+',encoding='utf-8')
r = f.read()
print(r)
f.close() writeFile()
readFlie()
#结果:
0
3
2
5
12abc
'''

#二进制文件
#打开方式:rb wb ab rb+ wb+ ab+
'''
实践中总结:
 1' list内容写入文件在需要专成str格式,应为列表格式文件不接受或者采用 (f.a) 的样式;(案例综合:教材管理95-101行)


python_文件的打开和关闭的更多相关文章

  1. C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

    迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...

  2. Linux C 文件与目录2 文件的打开与关闭

    文件的打开与关闭 open和close 文件的打开指的是从磁盘中找到一个文件,返回一个整形的打开文件顺序的编号.打开的文件处于可读.可写状态.文件的关闭指的是释放打开的文件,是文件处于不可读写的状态. ...

  3. 标准IO: 文件的打开与关闭函数 fopen & fclose

    (1) 流(stream)和文件(file)    流和文件 在Turbo C2.0中是有区别的, Turbo C2.0 为编程者和被访问的设备之间提供了一层抽象的东西, 称之为"流&quo ...

  4. python文件的打开与关闭

    #文件的打开 #open(文件名,访问模式) f=open('test.txt','w') #文件的关闭 f.close() 访问模式 说明 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是 ...

  5. python笔记1——关于文件的打开与读写

    一.文件的打开与关闭1.open,close函数 #-*- coding:utf-8 -*- # 1.w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写 # w ...

  6. python_文件操作代码实例

    """提示:代码中的内容均被注释,请参考,切勿照搬""" 1 #文件的打开和关闭 ''' 文件对象 = open('文件名','使用方式') ...

  7. PHP怎么打开或者关闭文件?

    什么是文件处理? 文件处理包括读取,关闭,重写等.掌握文件的处理需要读者理清思路,掌握好文件处理的关键步骤和常用函数,那么就可以运用自如了!感兴趣的请移步php文件处理专题. 比如,访问一个文件需要 ...

  8. java中打开文件流后要关闭后重新打开

    记录错误,打开文件流一定要关闭并重新打开文件流,不然取的文件内容永远是第一次取的文件内容: /** * 读取配置文件 */ private Properties readProperties() { ...

  9. linux文件操作篇 (二) 打开和关闭文件

    2.1 打开文件和关闭文件 #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>  头文件 i ...

随机推荐

  1. Luogu 3530 [POI2012]FES-Festival

    我是真的不会写差分约束啊呜呜呜…… BZOJ 2788被权限了. 首先对于第一个限制$x + 1 = y$,可以转化成$x + 1 \leq y \leq x + 1$, 所以连一条$(y, x, - ...

  2. jQuery选择器和选取方法.RP

    我们已经使用了带有简单Css选择器的jQuery选取函数:$().现在是时候深入了解jQuery选择器语法,以及一些提取和扩充选中元素集的方法了. 一.jQuery选择器 在CSS3选择器标淮草案定义 ...

  3. dfs和bfs算法

    1. 存储图的方式一般是有两种的:邻接表和邻接矩阵,一般存储链接矩阵的方式是比较简单的,也便于我们去实现这个临接矩阵,他也就是通俗的二维数组,我们平常用到的那种. 2. 这里我们主要记录和讲一下bfs ...

  4. STL-- vector中resize()和reserve()区别

    最近写了一个小型的STL--TinySTL.发现有一些基础的东西需要记录下来,所以我打算多写一些东西,方便以后查看. 先看看<C++ Primer>中对resize()函数两种用法的介绍: ...

  5. Java的post请求-----接口测试

    本次主要是对登陆的接口测试post请求,希望记录在博客里面,一点一点的成长. package com.ju.Login; import java.io.BufferedReader; import j ...

  6. Java50道经典习题-程序48 数字加密

    题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换.分析:例如原始 ...

  7. SpringMVC的理解

    SpringMVC工作原理 SpringMvc是基于过滤器对servlet进行了封装的一个框架,我们使用的时候就是在web.xml文件中配置DispatcherServlet类:SpringMvc工作 ...

  8. springcloud 定义切面实现对请求操作记录日志,方便后面分析接口详情

    package com.idoipo.infras.gateway.open.config; import com.alibaba.fastjson.JSON; import com.alibaba. ...

  9. nodejs nodejs的操作

    nodejs的操作 由于版本造成的命令不能正常安装,请参考五问题 一.概念: 参考百度百科: http://baike.baidu.com/link?url=aUrGlI8Sf20M_YGk8mh-- ...

  10. Data Base 常用数据库参数的前缀表示符合

    可能参数化SQL语句不同,例如在Access中参数化SQL语句是在参数直接以“?”作为参数名,在SQL Server中是参数有“@”前缀,在MySQL中是参数有“?”前缀,在Oracle中参数以“:” ...