Python学习笔记之open()函数打开文件路径报错问题


Posted in Python onApril 28, 2018

要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符,标示符'r'表示读。

>>> f = open('D:/test.txt','r')

注意了,对初学python的同学而言,open()函数着实存在一个不大不小的坑,而且十分不容易发现。

错误演示:

>>> f = open('D:\test.txt','r') 
Traceback (most recent call last): 
 
 File"<ipython-input-56-6a0acaf613c9>", line 1, in <module> 
 f =open('D:\test.txt','r') 
 
OSError: [Errno 22] Invalid argument: 'D:\test.txt'

仿佛没有什么不对的地方,一模一样的嘛!再仔细看,斜杠的方向不一样,为什么会出现这样的情况呢,原因在于我们从系统中直接复制文件所在路径所致,Windows系统文件路径中的斜线符号为'\'。

 Python学习笔记之open()函数打开文件路径报错问题

这就引出了转义字符的概念,需要在字符中使用特殊字符时,python用反斜杠'\'转义字符,所以错误案例中的'\'被用作转义,导致解释器解释文件路径错误。

改正的方法有两种:第一、将'\'的方向反向为'/',即文首正确的写法;第二、在含有转义符的字符串前加‘r'表示字符串内按原始含义解释,不做转义处理。(推荐!)

>>> f = open(r'D:\test.txt','r')

另附:

转义字符表

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

open()函数标识符表

r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+ 打开一个文件用于读写。文件指针将会放在文件的开头。

rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
用python写一个windows下的定时关机脚本(推荐)
Mar 21 Python
Python global全局变量函数详解
Sep 18 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
Python3爬虫中Ajax的用法
Jul 10 Python
详解python tkinter 图片插入问题
Sep 03 Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 08 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
Python之读取TXT文件的方法小结
Apr 27 #Python
如何利用python查找电脑文件
Apr 27 #Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 #Python
python Spyder界面无法打开的解决方法
Apr 27 #Python
解决Spyder中图片显示太小的问题
Apr 27 #Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 #Python
python spyder中读取txt为图片的方法
Apr 27 #Python
You might like
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
jquery使用经验小结
2015/05/20 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
简单的Python2.7编程初学经验总结
2015/04/01 Python
Python探索之修改Python搜索路径
2017/10/25 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
Django实现文件上传和下载功能
2019/10/06 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
党员承诺书怎么写
2014/05/20 职场文书
超市开店计划书
2014/09/15 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
话题作文之学会尊重
2019/12/16 职场文书