前面几天学习了一写python的基础语法,也学习了分支if,循环while和for。由于之前已经做过几年的开发了,所以我们知道,许多数据来源并不是靠键盘输入到程序中去的,而是通过数据库和文件来获取到的,那么今天就来学习文件对象。

一、文件的打开(open()和file())

python 中为我们提供了两种打开文件的方式,分别是open()函数和file()函数,为我们提供了初始化输入/输出(I/O)操作的通用方法,当我们打开一个文件时会返回一个文件对象,但是这里需要注意的是,如果文件不存在,是会抛出异常的。而且file()函数和open()函数是一致的,可以互相替换。

  • 基础语法
file = open('file_location', access_mode='r', buffering=-1)

其中三个参数分别代表了,文件路径,这里可以是相对路径,也可以是绝对路径,第二个参数是表示打开文件的模式,第三个参数是开始的位置。

  • 文件模式
文件模式 操作
r 以读的方式打开,如果文件不存在则抛出异常。文件可以不写打开模式,模式是以r的方式打开。
w 以写的方式打开,如果文件存在则清空文件内的内容,如果文件不存在,则创建文件。
a 以追加模式打开文件,如果文件存在则追加内容如果文件不存在则创建新文件。
r+ 以读写模式打开,如果文件不存在则抛出异常
w+ 以读写模式打开,如果文件存在则清空文件内的内容,如果文件不存在,则创建文件。
a+ 以读写模式打开文件,如果文件存在则追加内容如果文件不存在则创建新文件。

二、文件读取 read 方法

read()方法是直接以字节的方式来读取文件,将文件读取到字符串中,可以给到读取文件的字节数,如果文友给定,则默认为读到文件末尾为止,也就是-1.

  • 语法
file = open("fileName");
data = file.read();
print(data);
file.close(); 

如果一个文件特别大,我们这样去读的话就会把文件中的所有内容都会读到内存中,这样会导致我们的内存被撑爆,所有我们需要在这里限制读的大小,也就是在read()中加入参数,这里参数表示字节,我们一般是写4096,也就是读4096个字节。为什么是4096呢?因为,我们硬盘的分区格式化时,硬盘的一个分区最小簇是4096(4K),而且硬盘的工作效率比较低,所以当我们去寻址时,最好是将这一个簇的空间的值都拿出来,这样工作效率是最高的。

三、文件读取 readline 方法与 readLines 方法

readlin()方法只适用于文本文件,因为他是读取一行文件。

  • readlin()语法
file = open("fileName");
data = file.readlin();
file.close();
 

readlins()方法只适用于文本文件,因为他是读取剩下的所有行的文件。

  • readlins()语法
file = open("fileName");
data = file.readlins();
file.close(); 

四、文件迭代

如果将文本文件逐行进行处理,此时我们就需要结合循环去处理文件。
我们来看个例子,读取一个文本文件,并且将其逐行输出。

# -*- coding=utf-8 -*-
'''
Created on 2018年12月23日
文件 @author: Herrt灬凌夜
'''
file = open("C:\\Users\\Administrator\\Desktop\\testFile.txt");
for line in file :
print(line, end="");
file.close();
 

我们将file的每一行赋值给line,然后输出line。这里需要注意的是print是自带一个换行符的,所以我们在这里要将print的换行符去掉。

五、文件写入 write 方法

write 方法与 read方法正好相反,它是将文本数据和二进制数据写入到文件中,而在写入的过程中,程序是不会自动加如结束语句,比如换行等等,这需要我们手动写入。

  • write 语法
file = open("fileName", "w");
data = file.write("content\n");
file.close();
 

这里我们需要注意的是,我们使用write写入文件时,文件并不会立刻写入文件中,而是首先存入缓存中,当文件达到比较大,比如4K时会自动往硬盘上写,但是如果我们需要立刻将文件写入到文件的话,我们就需要使用文件的flush()方法,或者将文件closer(),这样,系统就会立刻将缓存中的内容直接写入到硬盘中。

六、文件写入 writelines([]) 方法

writelines方法,同样是只适用于文本文件,但是他的传参是一个列表,可以将列表中的每一个元素写入到文件中。
我们看个例子:

file = open("C:\\Users\\Administrator\\Desktop\\testFile.txt", "a");
data = file.writelines(["这是第四行\n", "这是第五行\n"]);
file.close();
 

七、练习

所谓熟能生巧,尤其我们刚刚开始学习语言更是需要多加练习,所以最后以一个例子来结束今天的学习。
模拟 cp 操作:

# -*- coding=utf-8 -*-
'''
Created on 2018年12月23日
文件 @author: Herrt灬凌夜
'''
srcFileLocation = "C:\\Users\\Administrator\\Desktop\\None和表达式.mp4";
dstFileLocation = "C:\\Users\\Administrator\\Desktop\\cpNone和表达式.mp4"; srcFile = open(srcFileLocation, "rb");
dstFile = open(dstFileLocation, "wb"); while True :
data = srcFile.read(4096);
if len(data) == 0 :
break;
print("");
dstFile.write(data); srcFile.close();
dstFile.close();
 

我这里是将一个视频文件做了一个拷贝操作,需要注意的是win的操作系统如果open()文件要以字节的方式打开时,我们需要加个b表示以字节方式打开。

-------------------- END ---------------------


最后附上作者的微信公众号地址和博客地址


公众号:wuyouxin_gzh




Herrt灬凌夜:https://www.cnblogs.com/wuyx/

python语法(四)— 文件操作的更多相关文章

  1. python语法基础-文件操作-长期维护

    ###############    python-简单的文件操作  ############### # python中文件的操作 # 文件操作的基本套路 # 1,打开文件,默认是是只读方式打开文件 ...

  2. python语法_文件操作

    牢记“”“能调用方法的一定是对象”“” 文件的操作流程, 1 建立文件(打开文件)open('filename','模式').read() [这一步其实就是创建对象] 2 通过句柄进行操作 3 关闭o ...

  3. python基础四(文件操作)

    1.文件操作的基本流程 1.1 文件操作的基本流程 # 绝对路径 # r"d:/葫芦娃.txt 前面的r 为转义. linux平台和windows的分隔符不同 f = open(r" ...

  4. Python入门篇-文件操作

    Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...

  5. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

  6. Python的高级文件操作(shutil模块)

    Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...

  7. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

  8. python os&shutil 文件操作

    python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...

  9. Python之常用文件操作

    Python之常用文件操作

  10. Python基本语法_文件操作_读写函数详解

    目录 目录 软件环境 file文件对象 open文件操作 读文件 read读取所有文件内容 readline获取一行内容 readlines读取所有文件内容 readreadlinereadlines ...

随机推荐

  1. spring注解 @Scheduled(cron = "0 0 1 * * *")实现定时的执行任务

    @Scheduled(cron = "0 0 1 * * *") 在使用该注解以前请做好以下准备工作,配置好相应的xm文件. 配置定时注解的步骤:http://blog.csdn. ...

  2. Asp.net操作Word文档,原来这么简单啊!

    引用Word对象库文件  具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为 ...

  3. 第7月第25天 xcode bundle calayer动画

    1. http://www.jianshu.com/p/3755c35ac87f 2.calayer http://www.jianshu.com/p/aadfce72bf74

  4. not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA

    Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AV ...

  5. 20155303 2016-2017-2 《Java程序设计》课程总结

    20155303 2016-2017-2 <Java程序设计>课程总结 目录 一.每周作业及实验报告链接汇总 二.关于博客 自认为写得最好一篇博客是?为什么? 作业中阅读量最高的一篇博客是 ...

  6. 【Python】HackBack(获取暴力破解服务器密码的IP来源)

    1.前言 又在0x00sec上翻到好东东. https://0x00sec.org/t/python-hackback-updated/882 帖子里的脚本会得到那些暴力服务器密码失败的IP和用户名, ...

  7. mac安装sentry

    最近需要一个日志监视系统所以选择了sentry. 安装docker https://download.docker.com/mac/stable/Docker.dmg 登录 安装完了打开 会提示登录输 ...

  8. SQLServer 的case when语句使用实现统计

    已知有表game_info 如下 date_info result_info 2018-2-4 win 2018-2-4 lose 2018-2-4 win 2018-2-4 lose 2018-2- ...

  9. 当父级绑定了DataContext之内的数据源时,子级想重新绑回DataContext

    <Grid x:Name="NewDeploymentObjectPanel" Background="White" DataContext=" ...

  10. java 异常历史 和观点

    异常起源于PL/1和Mesa之类的系统中. 1.) 不在于编译器是否会强制程序员去处理错误,而是要由一致的,使用异常来报告错误 2.) 不在于什么时候进行检查,而是一定要有检查.