目录

一、文件介绍

1.什么是文件

2.文件的分类

3.文件的作用

4.使用文件的流程

二、读写文件简单操作

1.读取文件

2.写文件

3.文件拷贝

三、文件权限

读操作

1.r

2.rb

3.r+

写操作

1.w

2.wb

3.w+

4.a

5.a+

四、文件操作

读操作

1.read()

2.readline()

3.readlines()

4.循环读取

写操作

1.write()

2.writelines()

其他操作

1.tell()

2.seek()

3.name()和mode()

五、with

六、乱码

1.往pycharm中的k.txt中保存内容会乱码

2.向磁盘中的文件保存内容,不乱码


一、文件介绍


1.什么是文件

狭义说:文本文件;

广义说:超文本文件, 图片,声音,超链接,视频。

2.文件的分类

文件大体上可以分为两类,文本文件二进制文件

3.文件的作用

使用文件的目的是把一些数据存储存放起来。

4.使用文件的流程

我们操作一个文件的流程一般是 打开文件读写文件关闭文件。通过程序操作文件的流程也是这三步,首先打开文件,然后读写文件,最后关闭文件。


二、读写文件简单操作


1.读取文件

file叫做文件句柄(变量)用来操作文件

第一个参数是文件的路径,

第二个参数 mode=访问文件的模型,r 表示读,默认也是r 模式

file=open('file/a.txt',mode='r',encoding='UTF-8')
ret=file.read()#将文件中的所有内容一次性读取出来
print(ret)
#最后关闭文件
file.close()

2.写文件

mode='w' 表示写文件

注意:如果文件不存在,会先自动创建文件(不会创建目录),然后再写内容

file=open('file/d.txt',mode='w')
file.write('azy')
file.close()

3.文件拷贝

file1=open('file/a.txt',mode='r')
file2=open('file/c.txt',mode='w')
ret=file1.read()
file2.write(ret)
file1.close()
file2.close()

c.txt拷贝的a.txt


三、文件权限


读操作

1.r

以只读方式打开文件。

文件的指针将会放在文件的开头。

这是默认模式。

file=open('file/a.txt',mode='r',encoding='UTF-8')
ret=file.read()#将文件中的所有内容一次性读取出来
print(ret)
#最后关闭文件
file.close()

2.rb

以二进制格式打开一个文件用于只读。

文件指针将会放在文件的开头。

一般用于非文本文件如图片等。

file=open('file/Koala.jpg',mode='rb')
ret=file.read()
print(ret)
file.close()

3.r+

打开一个文件用于读写。

文件指针将会放在文件的开头。

先读后写

file=open('file/c.txt',mode='r+')
#先读
ret=file.read()
print(ret)
#后写
file.write('mmmmmm')
file.close()

先写后读 

file=open('file/a.txt',mode='r+')
#先写
file.write('llllll')
#后读
ret=file.read()
print(ret)
file.close()

读的内容

 如果文件不存在,不会自动创建

file=open('file/e.txt',mode='r+')
file.close()

写操作

1.w

打开一个文件只用于写入。

如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。

如果该文件不存在,创建新文件。

file=open('file/b.txt',mode='w')
file.write('csx')
file.close()

2.wb

以二进制格式打开一个文件只用于写入。

如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。

如果该文件不存在,创建新文件。

一般用于非文本文件如图片等。

file1=open('file/Koala.jpg',mode='rb')
file2=open('file/Koala2.jpg',mode='wb')
ret=file1.read()
file2.write(ret)
file1.close()
file2.close()

3.w+

打开一个文件用于读写。

如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。

如果该文件不存在,创建新文件。

file=open('file/a.txt',mode='w+')
# #先写
file.write('llllllmm')#将原文件中的内容删除重新写
ret=file.tell()
print(ret)
# #后读
file.seek(0,0)
ret1=file.read()#什么都没有
print(ret1)
file.close()

4.a

打开一个文件用于追加

文件已存在

如果该文件已存在,文件指针将会放在文件的结尾。

也就是说,新的内容将会被写入到已有内容之后。

file=open('file/a.txt',mode='a')
file.write('\nazy lmm')
#ret=file.read() 不能读,会报错
#print(ret)
file.close()

文件不存在

如果该文件不存在,创建新文件进行写入。

file=open('file/b.txt',mode='a')
file.write('\nazy lmm')
#ret=file.read() 不能读,会报错
#print(ret)
file.close()

注意:都不可进行读操作

5.a+

打开一个文件用于读写

文件已存在

如果该文件已存在,文件指针将会放在文件的结尾。

文件打开时会是追加模式。

先写后读

file=open('file/a.txt',mode='a+')
file.write('\nazy lmm')#追加完后光标停在末尾
t=file.tell()
print(t)
#后读
ret=file.read()
print(ret) #什么都读不到
file.close()

先读后写

#先读
file=open('file/b.txt',mode='a+')
ret=file.read() #什么都读不到,因为光标在内容的末尾
print(ret)
#后写
file.write('happy')
file.close()

文件不存在

如果该文件不存在,创建新文件用于读写,读写方式同文件存在时一样。


四、文件操作


读操作

1.read()

调用read()一次性读取文件的全部内容,如果文件有10G,内存就爆了,会导致程序卡死,

所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。

2.readline()

readline每次读取一行,并且自带换行功能 ,每一行末尾会读到\n

file=open('file/a.txt',mode='r',encoding='UTF-8')
ret=file.readline()
print(ret)
file.close()

3.readlines()

readlines,一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来

4.循环读取

file句柄是一个可迭代的对象因此,可以循环读取文件中的内容,每次读一行

写操作

1.write()

file=open('file/b.txt',mode='w')
file.write('happy')
file.write('birthday')
file.close()

2.writelines()

格式:file.writelines(seq)

#把seq的内容全部写到文件中(多行一次性写入)

file=open('file/b.txt',mode='w')
lst=['aa\n','bb','cc']
file.writelines(lst)
file.close()

其他操作

1.tell()

tell获取文件当中当前光标所在的位置

2.seek()

seek移动光标位置

seek(offset,whence)

参数:

offset  移动的长度(字节)

whence 相对位置 0从开头(默认),1从当前,2从末尾

file=open('file/b.txt',mode='r')
ret=file.read(3)
print(ret)
ret2=file.tell()
print(ret2)
#1光标从当前位置
file.seek(0,1)
print(file.read(3))
#0光标从开始位置
file.seek(0,0)
print(file.read(3))
#2光标从末尾开始
file.seek(0,2)
print(file.read(3))
#r,r+不支持offset为非零数字
# file.seek(-1,2)
# print(file.read())
file.close()

3.name()和mode()

file.name 返回 路径

file.mode 返回 文件读写模式

file=open('file/b.txt',mode='r')
print(file.name)
print(file.mode)
file.close()


五、with


使用with方式操作文件,自动关闭文件,不需要file.close() 

with open('file/b.txt',mode='r') as f:ret=f.read()print(ret)


六、乱码


python读写文件时,默认使用的编码为平台编码,也就是gbk。

在pycharm中创建的文件默认使用的是utf-8编码。

1.往pycharm中的k.txt中保存内容会乱码

with open('file/a.txt', mode='w') as f:f.write('哈哈哈哈哈哈')

解决办法:

2.向磁盘中的文件保存内容,不乱码

with open('e:/a.txt', mode='w') as f:f.write('哈哈哈哈哈哈')

Python基础---文件相关推荐

  1. Python基础-文件操作

    Python基础-文件操作 1.文件的打开和关闭 # 1.打开文件 # 默认r模式 只读 文件不存在,报错 # f = open('a.txt')# w模式 写权限 # 如果文件不存在,就会创建文件 ...

  2. python list 平均值_python list 最大值和平均值Python基础 - 文件拷贝

    最近在备份手机上的照片的时候,纯手工操作觉得有些麻烦,就想写个脚本自动进行.因为备份的时候有些照片以前备份过了,所以需要有个判重操作. 主要功能在copyFiles()函数里实现,如下: 电脑技术网认 ...

  3. Python基础--文件操作

    文件操作通常用来存储程序结果,以便下次可以直接使用,不必要重新运行一遍.文件操作最基本的三步:1.打开文件或者新建文件  2. 读或者写  3 关闭文件流保存数据. Python 访问模式如下: 打开 ...

  4. python读文件每一行、并把这行替换-python基础--文件操作实现全文或单行替换

    python修改文件时,使用w模式会将原本的文件清空/覆盖.可以先用读(r)的方式打开,写到内存中,然后再用写(w)的方式打开. 替换文本中的taste 为 tasting Yesterday whe ...

  5. python基础——文件与IO

    目录 一.打开文件 二.文件的读取 1.read方法 2.readlines方法 3.readline方法 4.for循环读取文件 三.文件的写入 1.文件不存在时 2.文件存在时 四.文件的追加 五 ...

  6. 第三章 Python基础——文件操作函数

    3.1三元运算 三元运算又称三目运算,是对简单条件的简写 if 条件成立:val=1 else:val=2 改成三元运算: val=1 if条件成立 else 2 3.2字符编码转换 编码的种类情况: ...

  7. python基础------文件读写操作、re、os和sys模块

    1. 文件读取 1.1 file文件 file文件读取:只能写入字符串,如果要写入字符串以外的数据,先将他转换为字符串,文件内的数据不容易操作 #文件打开 file.open() #文件关闭 file ...

  8. 4道Python基础文件操作函数 练习题

    一.利用b模式,编写一个cp工具,要求如下: 既可以拷贝文本又可以拷贝视频,图片等文件 用户一旦参数错误,打印命令的正确使用方法,如usage: cp source_file target_file ...

  9. 学会python的基础操作题_第3章 Python基础-文件操作函数 文件操作 练习题

    一.利用b模式,编写一个cp工具,要求如下: 1. 既可以拷贝文本又可以拷贝视频,图片等文件 2. 用户一旦参数错误,打印命令的正确使用方法,如usage: cp source_file target ...

最新文章

  1. linux内核调优参考
  2. pyqt tcp通信_实验十 基于PyQt界面的TCP通信程序(一).doc_学小易找答案
  3. 【Python】55个案例:吃透Python字符串格式化
  4. jQuery 遍历
  5. 【Qt】undefined reference to `vtable for xxx’
  6. Linux下几款C++程序中的内存泄露检查工具
  7. sapmto生产模式配置及操作详解_硬岩制砂线怎么设计?300t/h的生产流程与设备配置详解...
  8. 多用途app软件业务介绍官网模板
  9. python入门——P51模块:模块内测试、搜索路径和包
  10. Spring Date JPA实现增删改查
  11. 【值得收藏】10个实现炫酷UI前端效果的CSS生成工具
  12. Native method not found: com.autonavi.amap.mapcore.MapProjection.nativeLonLat2Geo:(DDLcom/autonavi/a
  13. MTK通信物料供应表MT7621AT,MT7620A,WIFI6,MT7975D+MT7905D
  14. lombok报错Ambiguous method call. Both
  15. 【交易架构day6】有赞订单交易系统的演进之路——如何存储海量订单数据
  16. 使用mybatis的Vo对象简单完成需求查询
  17. 常见编码格式(中文编码)
  18. 《编写有效用例》读书笔记(6)——前置条件、触发事件和保证
  19. 旷视2022:以产品之能加速行业发展,以生态之力开拓AIoT蓝海
  20. python3项目源代码下载_GitHub 上适合新手的 Python 开源项目

热门文章

  1. Java 的守护线程是什么情况?
  2. HYSBZ 2565 最长双回文串 (回文树)
  3. 项目前期准备的重要性
  4. 迁移Veil:手工打造Windows下编译的免杀Payload
  5. eclipse与数据库连接插入或者拿出数据出现乱码该如何解决。
  6. java实现文本纠错功能_调用百度API进行文本纠错
  7. mybatis批量更新数据三种方法效率对比
  8. maya为什么不能导出fbx_maya的模型导出为OBJ,然后导入到3dmax后uv全乱了 (导出FBX更不行,导出的FBX文件放max里面基本没面了)...
  9. 网络工程师——Super VLAN
  10. 前端技术的发展和趋势