Python中存取文件的4种不同操作


Posted in Python onJuly 02, 2018

前言:

最近开始学习tensorflow框架,选修课让任选一种框架实现mnist手写数字的识别分类。小詹也就随着大流选择了 tf 框架,跟着教程边学边做,小詹用了不同的神经网络实现了识别分类,其中有一个步骤是将训练过程得到的模型进行保存,在之后的测试中加载并使用该模型。想到这种先保存再加载调用的过程,之前很多地方都遇到过呀,最简单常用的就是python中文件的存取哇!于是乎,小詹夜观星象,就着手整理记录各种文件存取的骚操作,具体如下。

(PS:虽然我知道技术文章太长,耐心看完的人很少,曝光率和点赞率会下降,更不会有什么收益,但是还是想记录下自己学习过程中的一些笔记,以后自己或者别人查起来方便些!)

方法预览

●Python内置方法

●numpy模块方法

●os模块方法

●csv模块方法

Python内置方法

在不需要借助任何外界库的前提下,python内置方法其实也可以完成我们需要的文件存取任务,这里主要介绍几种python内置方法的使用方式,最后再给出一个实际案例展示:

1、open()方法

file object = open(file_name [, access_mode][, buffering])

该方法意义在于按照指定模式打开文件,其中,各个参数的含义如下:

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

access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。常用文件访问模式见下图(来源于网络)

Python中存取文件的4种不同操作

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

2、close()方法

fileObject.close()

File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。

3、write ()方法

fileObject.write(string)

write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符('\n');被传递的参数是要写入到已打开文件的内容。

4、read () 方法 

fileObject.read([count])read()

方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。

5、举例分析

一般情况,建议小伙伴们使用with ...as...写法,这种会在执行完代码块后自动close,既可以简化程序,又可以避免自己粗心或者其他原因造成的不必要错误,下面给出一个实际案例。

#先用open方法打开(不存在则创建)一个文件,
#write方法写入内容,这里with写法不用手动close
#注意这里是模式‘a',意味着写入内容不覆盖已有内容
with open('test.txt','a') as file_test:
 file_test.write('小詹是个美男子!\n')
 file_test.write('请关注公众号【小詹学python】!\n')
#注意利用read方法读取内容,模式要设置为可读模式
#read()方法不带参数,表示默认读取最长内容
with open('test.txt','r') as file_test:
 str = file_test.read()
 print(str)

输出结果会在目录下多出一个test.txt文件,并读取后输出所有内容,下图为执行了三次的结果,说明模式‘a'不会覆盖已有内容(重要的事情说三遍!)

Python中存取文件的4种不同操作

numpy模块方法

这里主要介绍numpy模块中的两个常用方法,用于保存读取数据。

np.loadtxt(filename, dtype=int, delimiter=' ')
np.savetxt(filename, a, fmt="%d", delimiter=",")

其中,filename为要保存或读取的文件名,a为存取的内容,delimiter为分隔符号。这个使用很简单,代码如下:

import numpy as np

a=np.arange(0,10,0.5).reshape(4,-1)
#改为保存为整数,以逗号分隔
np.savetxt("a.txt",a,fmt="%d",delimiter=",")
#load时也要指定为逗号分隔
b = np.loadtxt("a.txt",delimiter=",")
print('b=\n',b)

其运行结果,创建了一个名为'a.txt‘ 的文件,保存了数组,并print打印出来读取结果,如下图:

Python中存取文件的4种不同操作

os模块方法

python中的os模块很强大,提供了许多文件处理操作的方法。以下列举出常用的几种方法。

1、os.open()

os.open(file, flags[, mode]);

其中,参数含义为:

file -- 要打开的文件

flags -- 该参数可以是以下选项,多个使用 "|" 隔开:

  • os.O_RDONLY: 以只读的方式打开
  • os.O_WRONLY: 以只写的方式打开
  • os.O_RDWR : 以读写的方式打开
  • os.O_NONBLOCK: 打开时不阻塞
  • os.O_APPEND: 以追加的方式打开
  • os.O_CREAT: 创建并打开一个新文件
  • os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
  • os.O_EXCL: 如果指定的文件存在,返回错误
  • os.O_SHLOCK: 自动获取共享锁
  • os.O_EXLOCK: 自动获取独立锁
  • os.O_DIRECT: 消除或减少缓存效果
  • os.O_FSYNC : 同步写入
  • os.O_NOFOLLOW: 不追踪软链接

2、os.rename(current_name,new_name)方法用于更改文件名称

3、os.remove(filename)方法用于删除指定文件

4、os.mkdir('newdir')方法用于创建单层目录,如果该目录已存在会抛出异常

5、os.chdir('newdir')方法用于改变当前工作目录

6、os.getcwd()方法获取当前工作目录

7、os.write(fd,str)向指定文件写入内容,注意str要转换成byte

这里注意针对内容的写入举例,注意str要转换成byte,否则会报错(a bytes-like object is required, not ‘str')!

import os
# # 打开文件
fd = os.open("f1.txt",os.O_RDWR|os.O_CREAT)
# # 写入字符串
line = "this is xiaozhan"
b = str.encode(line)
os.write(fd,b)
# #直接写str报错:a bytes-like object is required, not ‘str'
os.close(fd)
#以可读模式打开
fd = os.open("f1.txt",os.O_RDWR)
ret = os.read(fd,16)
print(ret)
os.close(fd)
print('finish close')
# os.remove('f1.txt')

运行结果如下:

Python中存取文件的4种不同操作

csv模块方法

和前几种方法一样,主要是读取和写入两个部分。主要依靠csv.reader(),csv.writer()和writerow()方法。和前边几种大同小异,这里直接代码中讲解基础的使用方式。

import csv

with open('l.csv', 'w',newline='') as csvfile:
 #csv.writer()方法创建
 eWriter = csv.writer(csvfile)
 #用writerow()方法逐行写入
 eWriter.writerow(['ID', '名字', '粉丝数量'])
 eWriter.writerow(['xiaoxiaozhantongxue','小詹学python',15000])
 eWriter.writerow(['xiaoxiaozhantongxue','小詹学python',15000])
 eWriter.writerow(['xiaoxiaozhantongxue','小詹学python',15000])

#打开文件,用with打开可以不用去特意关闭file了,python3不支持file()打开文件,只能用open()
with open('l.csv','r') as csvfile:
 #读取csv文件,返回的是迭代类型
 read = csv.reader(csvfile)
 for i in read:
  print(i)

运行结果如下图:

Python中存取文件的4种不同操作

以上就是本次整理的内容了,方便自己查阅也希望对各位读者有一丢丢用噢!文章太长,耐心看到这的,我得给你点个赞,送你一个么么哒。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python解析最简单的验证码
Jan 07 Python
Django数据库表反向生成实例解析
Feb 06 Python
Python基于pycrypto实现的AES加密和解密算法示例
Apr 10 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
Python设计模式之外观模式实例详解
Jan 17 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
python nmap实现端口扫描器教程
May 28 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
Python中url标签使用知识点总结
Jan 16 Python
windows下python安装pip方法详解
Feb 10 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 06 Python
python二维列表一维列表的互相转换实例
Jul 02 #Python
numpy.linspace 生成等差数组的方法
Jul 02 #Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 #Python
如何用Python合并lmdb文件
Jul 02 #Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 #Python
python numpy 显示图像阵列的实例
Jul 02 #Python
Python实现图片拼接的代码
Jul 02 #Python
You might like
php引用和拷贝的区别知识点总结
2019/09/23 PHP
使用PHP开发留言板功能
2019/11/19 PHP
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python实现word2Vec model过程解析
2019/12/16 Python
python判断是空的实例分享
2020/07/06 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
python 自动识别并连接串口的实现
2021/01/19 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
介绍一下内联、左联、右联
2013/12/31 面试题
经济系大学生求职信
2013/10/01 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
Python实现拼音转换
2021/06/07 Python
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技