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使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
在Django的session中使用User对象的方法
Jul 23 Python
Python实现屏幕截图的代码及函数详解
Oct 01 Python
TensorFlow变量管理详解
Mar 10 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
Python常见反爬虫机制解决方案
Jun 01 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
python写文件时覆盖原来的实例方法
Jul 22 Python
使用Python+Appuim 清理微信的方法
Jan 26 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 at(@)符号的用法简介
2009/07/11 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
php实现图片缩放功能类
2013/12/18 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
python类和继承用法实例
2015/07/07 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
Django 自动生成api接口文档教程
2019/11/19 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
shell变量的作用空间是什么
2013/08/17 面试题
家长给小学生的评语
2014/01/30 职场文书
父母寄语大全
2014/04/12 职场文书
公司合作协议书范本
2014/04/18 职场文书
就职演讲稿范文
2014/05/19 职场文书
交通安全标语
2014/06/06 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers