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

作者:marsjhao 时间:2021-10-05 23:25:34 

要以读文件的模式打开一个文件对象,使用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+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

来源:https://blog.csdn.net/marsjhao/article/details/60333312

标签:Python,open()
0
投稿

猜你喜欢

  • python requests库爬取豆瓣电视剧数据并保存到本地详解

    2022-05-29 08:35:05
  • django使用channels实现通信的示例

    2023-12-18 01:06:59
  • python数据预处理之数据标准化的几种处理方式

    2022-12-14 11:48:29
  • Python中字典的基础介绍及常用操作总结

    2022-11-30 14:33:40
  • 一篇文章带你入门Python正则表达式

    2021-11-29 03:00:56
  • linux实现定时备份mysql数据库的简单方法

    2024-01-16 07:21:57
  • 用js实现用户输入密码的强度

    2007-11-22 21:41:00
  • 数组任意位置插入元素,删除特定元素的实例

    2024-05-05 09:18:22
  • pycharm第三方库安装失败的问题及解决经验分享

    2023-07-11 01:50:45
  • 编写SQL需要注意的细节Checklist总结

    2012-10-07 10:43:57
  • python爬虫xpath模块简介示例代码

    2021-04-09 06:17:37
  • Python提取Linux内核源代码的目录结构实现方法

    2023-03-05 11:29:49
  • Pipenv一键搭建python虚拟环境的方法

    2022-07-15 03:49:41
  • python实现简单http服务器功能

    2023-03-24 15:36:58
  • 如何将你的应用迁移到Python3的三个步骤

    2022-03-17 08:59:48
  • Python将图片转换为字符画的方法

    2022-06-15 07:52:27
  • ASP读取日期单日期自动补零函数代码

    2011-02-20 10:39:00
  • 浅析“Rich”设计模式

    2009-03-12 12:36:00
  • DBCC CHECKIDENT 重置数据库标识列从某一数值开始

    2024-01-15 11:16:27
  • Python错误+异常+模块总结

    2023-07-26 03:18:19
  • asp之家 网络编程 m.aspxhome.com