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 相关文章推荐
python字典多条件排序方法实例
Jun 30 Python
python使用mailbox打印电子邮件的方法
Apr 30 Python
详解Python多线程
Nov 14 Python
python利用matplotlib库绘制饼图的方法示例
Dec 18 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
python 模拟银行转账功能过程详解
Aug 06 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
Mar 30 Python
python软件都是免费的吗
Jun 18 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
Jun 09 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
php用正则表达式匹配中文实例详解
2013/11/06 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
jQuery Password Validation密码验证
2016/12/30 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
用webAPI实现图片放大镜效果
2020/11/23 Javascript
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
python实现计算器功能
2019/10/31 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
python怎么判断模块安装完成
2020/06/19 Python
Django自带的用户验证系统实现
2020/12/18 Python
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
教师职称自我鉴定
2014/02/12 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
安全先进班组材料
2014/12/26 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
检讨书格式
2019/04/25 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js