python2.7: open()文件处理使用介绍

2023-11-13

#coding=utf-8
#新建文件open_file_test.txt内容:
# Hello World
# This is a test file
import os
print os.getcwd()
os.chdir("C:\Users\Administrator\Desktop\Pyhton2.7Tests")
test = [ "test1\n", "test2\n", "test3\n" ]
f = open("open_file_test.txt", "a+")
try:
 #f.seek(0)
 for l in test:
  f.write(l)
finally:
 f.close()
# 输出:
# Hello World
# This is a test filetest1
# test2
# test3

1. open()语法

open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
open函数有很多的参数,常用的是file,mode和encoding
file文件位置,需要加引号
mode文件打开模式,见下面3
buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小;
encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
errors的取值一般有strict,ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。
newline可以取的值有None, \n, \r, ”, ‘\r\n',用于区分换行符,但是这个参数只对文本模式有效;
closefd的取值,是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。

2. Python中file()与open()区别
两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,建议使用open

3. 参数mode的基本取值

Character Meaning
‘r' open for reading (default)
‘w' open for writing, truncating the file first
‘a' open for writing, appending to the end of the file if it exists
‘b' binary mode
‘t' text mode (default)
‘+' open a disk file for updating (reading and writing)
‘U' universal newline mode (for backwards compatibility; should not be used in new code)

r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、

常见的mode取值组合

r或rt 默认模式,文本模式读
rb   二进制文件
 
w或wt 文本模式写,打开前文件存储被清空
wb  二进制写,文件存储同样被清空
 
a  追加模式,只能写在文件末尾
a+ 可读写模式,写只能写在文件末尾
 
w+ 可读写,与a+的区别是要清空文件内容
r+ 可读写,与a+的区别是可以写到文件任何位置

4. 测试
测试文件test.txt,内容如下:

Hello,Python
www.jb51.net
This is a test file

用一小段代码来测试写入文件直观的显示它们的不同

test = [ "test1\n", "test2\n", "test3\n" ]
f = open("test.txt", "a+")
try:
 #f.seek(0)
 for l in test:
  f.write(l)
finally:
 f.close()

a+、w+和r+模式的区别(测试后还原test.txt)
a+模式

# cat test.txt
Hello, Python
www.jb51.net
This is a test file
test1
test2
test3

w+模式

# cat test.txt
test1
test2
test3

r+模式
在写入文件前,我们在上面那段代码中加上一句f.seek(0),用来定位写入文件写入位置(文件开头),直接覆盖字符数(注意\n也是一个字符)

# cat test.txt
test1
test2
test3
inuxeye.com
This is a test file

注意:r+模式打开文件时,此文件必须存在,否则就会报错,‘r'模式也如此
其他测试

>>> f = open('test.txt')
>>> f.read() #读取整个文件,字符串显示
'Hello,Python\nwww.jb51.net\nThis is a test file\n'
>>> f.read() #指针在文件末尾,不能再读取内容
''
>>> f = open('test.txt')
>>> f.readline() #一次读一行,指针在该行末尾
'Hello,Python\n'
>>> f.tell() #改行的字符长度
13
>>> f.readline()
'www.jb51.net\n'
>>> f.tell()
30
>>> f.readline()
'This is a test file\n'
>>> f.tell()
50
>>> f.readline()
''
>>> f.tell() #指针停在最后一行
50
>>> f = open('test.txt')
>>> f.readlines() #读取整个文件,以列表显示
['Hello,Python\n', 'www.jb51.net\n', 'This is a test file\n']
>>> f.tell() #指针在最后一行
50
>>> f = open('test.txt','w') #覆盖创建新文件
>>> f.write('Hello,Python!') #如果写入内容小于1024,会存在内存,否则需要刷新
>>> f.flush() #写入到硬盘
>>> f.close() #关闭文件会自动刷新
>>> f.write('Hello,Linuxeye') #关闭后,写失败,提示文件已经关闭
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file 

来自:http://www.jb51.net/article/58002.htm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python2.7: open()文件处理使用介绍 的相关文章

随机推荐

  • emoji引起的mysql utf-8mb4问题

    场景 在业务中发现备注输入emoji表情后后台系统异常 定位原因发现mysql表不支持此类字符集 mysql版本为5 6 字符集为utf 8 解决 将字符集改为utf 8mb4 报错信息 Incorrect string value xF0
  • 二叉搜索树-红黑树

    前面介绍了AVL树 虽然AVL树将二叉树的高度差保证在1 但是实现的太过复杂 因为要不断调整平衡因子 故而要来介绍另外一个用途比较广的结构 红黑树 红黑树 先来看来红黑树的特性 1 每个节点非红即黑 2 根节点为黑色 3 不能有连续的红节点
  • 智能优化算法——灰狼优化算法(Python&Matlab实现)

    目录 1 灰狼优化算法基本思想 2 灰狼捕食猎物过程 2 1 社会等级分层 2 2 包围猎物 2 3 狩猎 2 4 攻击猎物 2 5 寻找猎物 3 实现步骤及程序框图 3 1 步骤 3 2 程序框图 4 Python代码实现 5 Matla
  • 各大网站镜像源

    可设置maven npm 等等的下载源 1 腾讯镜像源 https mirrors cloud tencent com 2 华为开源镜像站 https mirrors huaweicloud com 3 阿里巴巴开源镜像站 https op
  • 怎样提取一个数的十位个位百位千位

    设一个数为n 则在C语言中其个位 十位 百位 千位依次这样计算zhi n 1 10 n 10 10 n 100 10 n 1000 10 include
  • Fibonacci数列

    题目描述 Fibonacci数列是这样定义的 F 0 0 F 1 1 for each i 2 F i F i 1 F i 2 因此 Fibonacci数列就形如 0 1 1 2 3 5 8 13 在Fibonacci数列中的数我们称为Fi
  • 测试用例(三)需求分析与提取测试点

    一 需求分析 一般由产品经理完成 1 业务需求 关注系统是否满足业务 2 用户需求 关注系统是否满足用户习惯 3 功能需求 关注系统是否满足功能要求 如果没有需求怎么办 参考市面上已经上线的同类产品 如果需求模糊怎么办 收集整理已有的需求
  • ES了解多少?说说你们公司的ES集群架构

    ES了解多少 说说你们公司的ES集群架构 介绍 核心概念 如何保证ES集群架构的安全性 ES的使用场景 介绍 ES 是一个基于Lucene框架的搜素引擎产品 you know for search 提供了Restful风格的操作接口 Luc
  • vue中通过render函数给子组件设置ref

    正常我们的写法是 这样ref不会生效 h是作用在渲染的时候的 而ref是渲染之后才创建的 因此在h函数中使用ref是无效的 render h params gt return h expandRow ref child props row
  • linux运行run文件显示cannot execute binary file

    感谢朋友支持本博客 欢迎共同探讨交流 由于能力和时间有限 错误之处在所难免 欢迎指正 如果转载 请保留作者信息 博客地址 http blog csdn net qq 21398167原博文地址 http blog csdn net qq 2
  • Linux系统查看内存使用情况

    操作系统 文章目录 操作系统 一 查看内存使用情况 1 使用 free 命令 2 查看 proc meminfo 3 使用 vmstat 命令 4 使用 top 命令 5 htop 命令 二 查看物理内存信息 小结 参考链接 一 查看内存使
  • 【Python 3.7】餐馆:创建一个名为 Restaurant 的类,其方法 __init__() 设置两个属性:restaurant_name 和 cuisine_type 。

    Python 3 7 餐馆 创建一个名为 Restaurant 的类 其方法 init 设置两个属性 restaurant name 和 cuisine type 创建一个名为 describe restaurant 的方法和一个名为 op
  • 【Python】将Numpy数组保存为图像

    点击阅读原文
  • U2Net、U2NetP分割模型训练---自定义dataset、训练代码训练自己的数据集

    前言 博客很久没有更新了 今天就来更新一篇博客吧 哈哈 最近在做图像分割相关的任务 因此 写这么一篇博客来简单实现一下分割是怎么做的 内容简单 枯燥 需要耐心看 哈哈 博客的内容相对简单 比较适合刚接触分割的同学参考学习 这篇博客在算法训练
  • SpringBoot的starter原理及如何自定义starter

    一 starter简介 Starter是Spring Boot中的一个非常重要的概念 Starter相当于模块 它能将模块所需的依赖整合起来并对模块内的Bean根据环境 条件 进行自动配置 使用者只需要依赖相应功能的Starter 无需做过
  • 【性能优化】作为一名前端工程师,网页白屏了该怎么做

    上周面试被问到这个问题 磕磕绊绊地答了一点 写个博客记录一下解决的主要思路 检查网络连接 首先检查网络连接是否正常 如果网络不稳定或者中断了 可能会导致网页无法加载 F12开发者工具 查看控制台输出 查看错误与警告信息判断问题所在 检查网页
  • [差量更新系列1]BSDiff算法学习笔记

    差量更新系列1 BSDiff算法描述 BSDiff是一个差量更新算法 它在服务器端运行BSDiff算法产生patch包 在客户端运行BSPatch算法 将旧文件和patch包合成新文件 差量更新算法的核心思想 尽可能多的利用old文件中已有
  • 如何让自己像打王者荣耀一样疯狂且不知疲倦地学习?

    阶段性反馈机制 如何持之以恒 让自己发疯 反馈机制是王者荣耀的核心武器 击杀野怪获得金币 击杀敌人之后的画面 音效刺激大脑 不断地努力 获得奖励是我们不断的玩这个游戏的主要原因 也是人的本能 我什么都得不到凭什么这么做 对记得初二的时候 父
  • PhpStudy使用中出现You don‘t have permission to access / on this server.解决办法

    前言 今天下了一个开源的建站文件 想用来测试一下 和往常一样 把文件放到根目录下之后 出现了FORBIDDEN报错 一开始挺纳闷的 httpd和hosts配置里的访问权限都是设置为Allow from all 况且其他目录都能正常访问怎么到
  • python2.7: open()文件处理使用介绍

    coding utf 8 新建文件open file test txt内容 Hello World This is a test file import os print os getcwd os chdir C Users Adminis