python中的记录指针_Python学习记录(3)(文件操作),python,三

1.

open()

函数用于打开一个文件

创建一个 file 对象,相关的方法才可以调用它进行读写。

open(name[, mode[, buffering]])

参数说明:

name : 一个包含了你要访问的文件名称的字符串值。

mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。

buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

注意:w、w+会覆盖已经存在的文件

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2lsb3Zlc3R1ZHky,size_16,color_FFFFFF,t_70

2.

fileObject.seek(offset[, whence])

方法用于移动文件读取指针到指定位置

参数:

offset – 开始的偏移量,也就是代表需要移动偏移的字节数

whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

打开文件的模式有:

r ,只读模式【默认】

w,只写模式【不可读;不存在则创建;存在则清空内容;】

x, 只写模式【不可读;不存在则创建,存在则报错】

a, 追加模式【可读; 不存在则创建;存在则只追加内容;】

“+” 表示可以同时读写某个文件

r+, 读写【可读,可写,不会创建不存在的文件,从顶部开始写 会覆盖之前此位置的内容】

w+,写读【可读,可写,不存在则创建;存在则

清空内容

;】

x+ ,写读【可读,可写,不存在则创建,存在则

报错

a+, 写读【可读,可写,不存在则创建;存在则

只追加内容

;】

"b"表示以

二进制

的方式操作

rb 或 r+b

wb 或 w+b

xb 或 w+b

ab 或 a+b

**r+解释:**运行之前是两行五五开牛逼,运行后按顺序覆盖写入,第二行的牛逼依旧存在,并未覆盖

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2lsb3Zlc3R1ZHky,size_16,color_FFFFFF,t_70

3.file对象常见函数

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2lsb3Zlc3R1ZHky,size_16,color_FFFFFF,t_70

4.文件读取时常见的格式错误

20200206205555664.png

原因:

读取文件中有中文

解决办法:

打开文件时以utf-8格式打开

f= open('C:/Desktop/PY/wuwukai.txt',encoding='utf-8')

print(f.read(10))

``

each_line 为f中的每一行

```python

for each_line in f :

print(each_line)

5.

注意:utf-8中,一个汉字占3个字节

原文:你们可能不知道只用20万赢到578万是什么概念

f.seek(0,0)

print(f.read(4))#read(4) 读了四个汉字

print(f.tell())# 此时的位置为12 即‘不’字的开头

f.seek(3,0)#0123 即们字开头 如输入1或2则会报错

print(f.read(4))

————————————————————下方为输出结果————————————————————

你们可能

12

们可能不

6.接受输入并保存为新文件

import os.path

def file_write(file_name):

f = open(file_name+'.txt','w')

print('请输入内容[单独树立\':w\'保存退出]:')

while True :

write_some = input()

if write_some != (':w'|':w'): #不区分中英

f.write('%s\n' % write_some)

else :

break

f.close()

file_name = input('请输入文件名:')

if os.path.isfile(file_name+'.txt') : #判断是否本地是否存在同名文件

print('请注意,若该文件夹中存在同名文件,请重新命名')

else:

file_write(file_name)

7.txt文件比较

def file_compare(file1,file2):

f1 = open(file1,encoding='utf-8')

f2 = open(file2,encoding='utf-8')

count = 0 #统计行数

different = [] #统计不一样的数量

for line1 in f1:

line2 = f2.readline()

count +=1

if line1 != line2:

different.append(count)

f1.close()

f2.close()

return different

file1 =input('请输入第一个文件名:')+'.txt'

file2 =input('请输入第二个文件名:')+'.txt'

#也该核查是否存在该文件

while file1==file2:

print('该两文件为同一文件,请重新输入第二个文件名:')

file2 =input('请输入第二个文件名:')

different = file_compare(file1,file2)

if len(different) ==0:

print('两个文件一样')

else:

print('两个文件共用[%d]处不同:' %len(different))

for each in different:

print('第%d行不一样' % each)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值