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常用列表数据结构小结
Aug 06 Python
Python统计列表中的重复项出现的次数的方法
Aug 18 Python
python使用Queue在多个子进程间交换数据的方法
Apr 18 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
Oct 20 Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
python 利用百度API识别图片文字(多线程版)
Dec 14 Python
java字符串格式化输出实例讲解
Jan 06 Python
一文读懂python Scrapy爬虫框架
Feb 24 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操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
javascript 网页跳转的方法
2008/12/24 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
美国著名手表网站:Timepiece
2017/11/15 全球购物
学生发电厂实习自我鉴定
2013/09/22 职场文书
后勤自我鉴定
2013/10/13 职场文书
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
办公室文员岗位职责
2015/02/04 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
庆祝教师节主持词
2015/07/06 职场文书
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers