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实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 Python
python psutil库安装教程
Mar 19 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
python 划分数据集为训练集和测试集的方法
Dec 11 Python
Python整数对象实现原理详解
Jul 01 Python
Python 控制终端输出文字的实例
Jul 12 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
深入理解PHP中的Session和Cookie
2013/06/21 PHP
php权重计算方法代码分享
2014/01/09 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP导入导出Excel代码
2015/07/07 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
javascript中创建对象的三种常用方法
2010/12/30 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
javascript验证form表单数据的案例详解
2019/03/25 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
Linux文件系统类型
2012/09/16 面试题
Linux文件操作命令都有哪些
2016/07/23 面试题
生活部的活动方案
2014/08/19 职场文书
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python