博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件处理
阅读量:4672 次
发布时间:2019-06-09

本文共 2451 字,大约阅读时间需要 8 分钟。

1.文件打开的四种方式:

# f = open(r'C:\Users\fengzi\Desktop\a.txt','r',encoding='utf-8')

如果直接这样打开文件,会因为无法判断是文件路径中的\还是转义字符中的\,而产生冲突,导致错误

所以文件打开时,有以下的几种方式:

f = open('文件的绝对路径 ','文件的执行方式(r,w,a)',encoding='文件的编码方式')

 #用什么字符编码写的,你就需要用什么字符编码读

 

# f = open('C:\\Users\\fengzi\\Desktop\\a.txt','r',encoding='utf-8')

# f = open('C:/Users/fengzi/Desktop/a.txt','r',encoding='utf-8')

# f = open(r'C:\Users\fengzi\Desktop\a.txt','r',encoding='utf-8')

如果使用以上的这三种方式打开文件,则在对文件操作之后,必须手动关闭,即:

必须在最后加 f.close()

# with open(r'C:\Users\fengzi\Desktop\a.txt','rb') as f:

  #如果是用with关键字打开文件,则不需要手动关闭

 

2.文件处理的几种简单函数(了解)

#应用程序是不能直接操作硬件的,应用程序需要通过os操作硬件

# f = open(r'C:\Users\fengzi\Desktop\a.txt','a',encoding='utf-8')

# f.flush()#保存

# res = f.readable()#判断文件是否可读

# res = f.writable()#判断文件是否可写

# print(res)

# f.close()

 

3.文件处理的读、写方法

#读方法

#8位1字节,1024bytes(字节)是1kb,

# f = open(r'C:\Users\fengzi\Desktop\a.txt','r',encoding='utf-8')

# data = f.read(4)#4是字符不是字节

# print(data)

# f.close()

 

 

# f = open(r'C:\Users\fengzi\Desktop\a.txt','r',encoding='utf-8')

# f.read(4)#4是字符不是字节

# data = f.read()#读取光标右边所有字符

# print(data)

# f.close()

 

 

# f = open(r'C:\Users\fengzi\Desktop\a.txt','r',encoding='utf-8')

# data = f.readline()#readline按行读取

# print(data)

# f.close()

 

 

#写方法(覆盖)

# f = open(r'C:\Users\fengzi\Desktop\a.txt','w',encoding='utf-8')

# f.write('哈哈哈,哈哈哈')#write方法覆盖原有内容

# f.writelines(('你','好','美','女','11'))#把列表或者元组拼接成一行字符串写入文件中

# f.close()

 

 

#写方法(不覆盖)

# f = open(r'C:\Users\fengzi\Desktop\a.txt','a',encoding='utf-8')

# f.write('哈哈哈,哈哈哈')

# f.writelines(['s','b'])

# # f.close()

 

4.bytes类型操作文件

# a = '你好'.encode('utf-8')#转码成utf-8类型的文件

# print(a.decode('utf-8'))#解码

# f = open(r'C:\Users\fengzi\Desktop\a.txt','rb')

bytes本身就是一种文件编码的类型,所以打开时,不需要指定文件编码类型。

rb:r表示读,b表示是bytes类型文件

# print(f.read().decode('utf-8'))

# f.close()

 

#

#  b'你好'不可以转化成bytes,b'abc'可以把abc字符串转化成bytes

#  f = open(r'C:\Users\fengzi\Desktop\a.txt','wb')

#  f.write(b'123')

#  f.close()

 

5.光标移动

seek()函数,控制光标移动,包含三种模式(0,1,2)

#0模式可以用在bytes类型和字符类型,1,2模式只能用在bytes类型下

#常用汉字在utf-8当中占3个字节,生僻字占的更多

# with open(r'C:\Users\fengzi\Desktop\a.txt','rb') as f:

#     f.seek(0)#把光标移动到开头

#     data = f.read()

#     print(data)

 

    # f.read(1)

    # f.seek(5,1)#1代表相对位置

    # print(f.read().decode('utf-8'))

 

    # f.seek(-4,2)#2代表把光标移动到末尾

    # data = f.read()

    # print(data)

seek(光标移动的方向和移动几位,模式类型)

正数表示向右移动几位,例如seek(5,1)表示从当前位置向右移动5位

负数表示向左移动几位,例如seek(-5,2)表示将光标从文件末尾向左移动5位

 

转义字符虽然不会在文本中显示,但是依旧占用字符,所以光标移动的时候,一定要考虑到:

例如:换行符!!

有换行符时:

 

 

没有换行符时:

 

 

转载于:https://www.cnblogs.com/leeeel/p/10806650.html

你可能感兴趣的文章
Binary Tree Inorder Traversal
查看>>
HDU 1394 Minimum Inversion Number (数据结构-线段树)
查看>>
ansible-playbook && Roles && include
查看>>
[Alpha阶段]第二次Scrum Meeting
查看>>
关于Java 8 forEach
查看>>
.NET设计模式(1):1.1 单例模式(Singleton Pattern)
查看>>
创建模态对话框和非模态对话框
查看>>
08-图8 How Long Does It Take
查看>>
二维数组中最大连通子数组
查看>>
java 正则表达式-忽略大小写与多行匹配
查看>>
mac 上亚马逊密钥登录
查看>>
css选择器中:first-child与:first-of-type的区别
查看>>
nopcommerce 二次开发
查看>>
NHibernate入门实例
查看>>
IBM_DS5020磁盘阵列做raid、热备并把盘阵挂在服务器上的步骤
查看>>
svg制作风车旋转
查看>>
《软件工程》课堂作业:返回一个整数数组中最大字数组的和
查看>>
ACM 美素数 (没AC)
查看>>
Sqlserver学习研究
查看>>
VTK图形模型主要对象
查看>>