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实现的去除win下文本文件头部BOM的代码
Feb 10 Python
Python基础练习之用户登录实现代码分享
Nov 08 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
Jun 26 Python
python 同时读取多个文件的例子
Jul 16 Python
python 计算两个列表的相关系数的实现
Aug 29 Python
python tkinter图形界面代码统计工具
Sep 18 Python
wxPython实现画图板
Aug 27 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 Python
python将图片转为矢量图的方法步骤
Mar 30 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正则校验用户名介绍
2008/07/19 PHP
建站常用13种PHP开源CMS比较
2009/08/23 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
java遇到微信小程序 "支付验证签名失败" 问题解决
2019/12/22 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
python3序列化与反序列化用法实例
2015/05/26 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
python os.listdir()乱码解决方案
2021/01/31 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
单位委托书
2014/10/15 职场文书
运动会加油稿20字
2014/11/15 职场文书
美术教师求职信范文
2015/03/20 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS