Python open函数打开文件路径「建议收藏」

Python open函数打开文件路径「建议收藏」要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符,标示符’r’表示读。 >>>f=open(‘D:/test.txt’,’r’) 注意了,对初学python的同学而言,open()函数着实存在一个不大不小的坑,而且十分不容易发现。错误演示:   >>>f=open(‘…

大家好,又见面了,我是你们的朋友全栈君。

要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符,标示符’r’表示读。

 

>>> f = open('D:/test.txt','r')

 

注意了,对初学python的同学而言,open()函数着实存在一个不大不小的坑,而且十分不容易发现。

错误演示:

 

 
  1. >>> f = open('D:\test.txt','r')

  2. Traceback (most recent call last):

  3.  
  4. File"<ipython-input-56-6a0acaf613c9>", line 1, in <module>

  5. f =open('D:\test.txt','r')

  6.  
  7. OSError: [Errno 22] Invalid argument: 'D:\test.txt'

仿佛没有什么不对的地方,一模一样的嘛!再仔细看,斜杠的方向不一样,为什么会出现这样的情况呢,原因在于我们从系统中直接复制文件所在路径所致,Windows系统文件路径中的斜线符号为’\’。

Python open函数打开文件路径「建议收藏」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://javaforall.net/141276.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 浅谈TCP和UDP协议

    浅谈TCP和UDP协议TCP 和 UDP 的区别我们大多数人的回答是 TCP 是面向连接的 UDP 是面向无连接的 那么什么是面向连接 什么是面向无连接 再互通之前 面向连接的协议会先建立连接 例如 TCP 会三次握手 而 UDP 不会 所谓的建立连接 是为了在客户端和服务端维护连接 而建立一定的数据结构来维护双方交互的状态 用这样的数据结构来保证所谓的面向连接的特性 例如 TCP 提供可靠交付无差错不丢失不重复按序到达而 UDP 更像 前面那讲提到过的 IP 包 不保证不丢失 不保证按顺序到达再比如 TCP 面向字节流 发送

    2025年8月9日
    1
  • linux怎么查看jdk的安装版本和安装路径_yum查看已安装的软件

    linux怎么查看jdk的安装版本和安装路径_yum查看已安装的软件打开终端,输入java-version即可显示当前系统的jdk版本打开终端,输入java-verbose即可显示当前系统的jdk的安装位置

    2022年9月23日
    4
  • 一阶惯性环节的性能分析——自动控制原理基础补充(二)

    一阶惯性环节的性能分析——自动控制原理基础补充(二)以前读书的时候学习自动控制原理,就是为了考试,各种相频幅频特性题咣咣做,一点都不含糊,但是实际代表什么意义一点都不知道。现在真是发现,这个东西有用得一批。这篇文章从一阶惯性环节为切入点,对自动控制原理进行一个简单的复习。还蛮喜欢博客里面写东西的,按照自己思路,按照逻辑一点一点往下,不像发文章八股文一样。1一阶惯性环节的bode图对于这个非常常见的一阶惯性系统而言,其关键指标就是截止频率。截止频率的定义:从频域响应的角度讲,当保持输入信号的幅度不变,改变频率使输出信号降至最大值的0.707倍

    2022年10月5日
    3
  • laravel中将session由文件保存改为数据库保存

    laravel中将session由文件保存改为数据库保存

    2021年10月22日
    43
  • 电机的力矩计算

    电机的力矩计算1.转动惯量的公式1.1转矩如何计算转矩等于转动惯量乘以角加速度,然后我们要注意一下单位,转矩的单位是NM,转动惯量的单位是kg*m2,角加速度单位是rad/s2。M=I*BM是转矩,I是转动惯量,B是角加速度。1.2关于单位转矩=转动惯量*角加速度,转矩单位是N.m,转动惯量单位是Kg.m^2,那么角加速度单位是什么,如果是rad/s^2,怎么推算的?rad不是物理量单位,是角度单位,以rad做角度单位时,rad无需写明,除非强调时。即角速度单位就是s^-1,角加速度单

    2022年5月14日
    71
  • 你必须了解的10款服务器监控工具有哪些_nmon监控工具使用方法

    你必须了解的10款服务器监控工具有哪些_nmon监控工具使用方法你不得不了解的10款服务器监控工具背景监控Web服务器或Web主机的运行状况和正常运行非常重要。如果希望确保您的网站可用性在您的控制之中,那你就需要收集服务器各种性能数据以供分析和调整。以下是收集

    2022年8月3日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号