python学习记录(文件操作)

2022年8月28日12:15:49

1.open() 函数用于打开一个文件

创建一个 file 对象,相关的方法才可以调用它进行读写。
open(name[, mode[, buffering]])
参数说明:

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

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

buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
注意:w、w+会覆盖已经存在的文件
python学习记录(文件操作)

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+解释:**运行之前是两行五五开牛逼,运行后按顺序覆盖写入,第二行的牛逼依旧存在,并未覆盖
python学习记录(文件操作)

3.file对象常见函数

python学习记录(文件操作)

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

python学习记录(文件操作)
原因:
读取文件中有中文
解决办法:
打开文件时以utf-8格式打开

f=open('C:/Desktop/PY/wuwukai.txt',encoding='utf-8')print(f.read(10))
``
each_line 为f中的每一行
```pythonfor each_linein 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.pathdeffile_write(file_name):
    f=open(file_name+'.txt','w')print('请输入内容[单独树立\':w\'保存退出]:')whileTrue:
        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文件比较

deffile_compare(file1,file2):
    f1=open(file1,encoding='utf-8')
    f2=open(file2,encoding='utf-8')
    count=0#统计行数
    different=[]#统计不一样的数量for line1in f1:
        line2= f2.readline()
        count+=1if 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)iflen(different)==0:print('两个文件一样')else:print('两个文件共用[%d]处不同:'%len(different))for eachin different:print('第%d行不一样'% each)
  • 作者:ilovestudy2
  • 原文链接:https://blog.csdn.net/ilovestudy2/article/details/104201357
    更新时间:2022年8月28日12:15:49 ,共 2249 字。