zoukankan      html  css  js  c++  java
  • python数据读取路径为啥要用双反斜杠?

     

    • Window下python读取数据路径可以有三种表示方式 

    (1)'c:\a.txt'  ——>转义的方式。表示这里\是一个普通字符,不容易出错
    (2)r'c:a.txt'  ——>声明字符串。表示不需要转义,因此这里 就是一个普通反斜杠字符(推荐

    (3)'c:/a.txt'  ——>直接用正斜杠表示路径。与linux一样,没有转义的误解(推荐

     

    • 为什么会出现三种表示呢?

    正斜杠,又称左斜杠,符号是"/";

    反斜杠,也称右斜杠,符号是""。

    在Unix/Linux中,路径的分隔采用正斜杠"/",比如"/home/hutaow";

    而在Windows中,正反斜杠二者皆可表示路径,通常看到是路径分隔采用反斜 杠"",比如"C:WindowsSystem"。
    有时我们会看到这样的路径写法,"C:\Windows\System",也就是用两个反斜杠来分隔路径,这种写法在网络应用或编程中经 常看到,事实上,上面这个路径可以用"C:/Windows/System"来代替,不会出错。但是如果写成了"C:WindowsSystem", 那就可能会出现各种奇怪的错误了。


    至于上述问题出现的原因,要从字符串解析这方面来分析。
    学过编程的人都应该知道,在C里面,输出字符串时,如果想输出一个换行,那就要加上' '这个标志,类似的,输出一个TAB,就加上' ',也就是说,反斜杠("")这个符号会把跟在它后面的字符结合起来转义成其它字符。根据这个原理,如果想输出双引号('"'),就需要输入' "',这样才会将包含了双引号的字符串正确的写入内存中。那么如果想输入一个反斜杠呢?很简单,只要敲'\'就可以了。

    看到这里或许有些人已经看出眉目了,如果"C:WindowsSystem"这个路径字符串交给C编译器编译,实际写入内存的字符串并没 有包含反斜杠"",甚至紧跟在反斜杠后面的字母也一起被转义成了其它的字符,再次调用的话势必会出问题。
    字符串解析不仅仅局限于C编译器,Java编译器、一些配置文件的解析、Web服务器等等,都会遇到对字符串进行解析的这个问题,由于传统的 Windows采用的是单个斜杠的路径分隔形式,导致在对文件路径进行解析的时候可能发生不必要的错误,所以就出现了用双反斜杠"\"分隔路径的形式。 不管解析引擎是否将反斜杠解析成转义字符,最终在内存中得到的都是"",结果也就不会出问题了。

     

  • 相关阅读:
    二分+RMQ/双端队列/尺取法 HDOJ 5289 Assignment
    思维题 HDOJ 5288 OO’s Sequence
    树形DP Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland
    最大流增广路(KM算法) HDOJ 1853 Cyclic Tour
    最大流增广路(KM算法) HDOJ 1533 Going Home
    最大流增广路(KM算法) HDOJ 2255 奔小康赚大钱
    Complete the Word CodeForces
    Gadgets for dollars and pounds CodeForces
    Vasya and Basketball CodeForces
    Carries SCU
  • 原文地址:https://www.cnblogs.com/zwt20120701/p/11267457.html
Copyright © 2011-2022 走看看