比如这段代码:
d = open('C:\Documents and Settings\Administrator\桌面\str.txt','a')
d.write('\na new line')
d.close()
e = open('D:\python work\Temp folder\str.txt','r')
for each in e.readlines():
print (each)
file_name = os.getcwd()+'\\'+'str.txt'
print(file_name)
f = open(file_name,'r')
for each in f:
print (each)
文件对象a的每一个字符都是手动敲进去的,可以顺利执行
文件对象b里的open里的引号括起来的那段是在win10系统下用getcwd()方法从IDLE里考出来的。如果不加转义符就会报错,显示内容是unicode出错:unicodeescaper cannot decode.
文件对象c的路径是从win10系统的文件管理器里考进去的,文件名是手敲的,如果不加转义符也会报错
文件对象e的路径是在win10系统里的文件管理器考进去的,但是目标文件在D盘,可以顺利执行。
file_name的值是win10下的‘C:\Users\Administrator\Desktop\str.txt’,虽然这个路径也是在C盘下的,但是由于它是通过os.getcwd()方法得到的所以也不会报错。
所以目前得到的结论就是:
对于win10系统而言,C盘的路径无论手敲还是复制粘贴过来的都要加转义符,但是通过os.getcwd()方法得到的只需要对链接文件名的那个斜杠'\\'加转义符,D盘的路径不需要增加转义符,python在编译的时候会自动帮你加上转义符
对于xp系统而言,不需要增加路径的转义符,python在编译的时候会自动帮你加上转义符。
===============================================================
import os
path_01 = 'D:\python work\Targets\Liberary'
files = os.listdir(path_01)
#对于win10系统而言,D盘的目录处都可以直接用单斜杠,但是结尾处如果有斜杠,就必须得加一个转义符 不然就会报错
===============================================================
最后,再加一个鸡零狗碎的东西,就是当文件打开方式是‘a’而不是‘r’时,执行打印文件会报错,显示内容是not readable。要想打印文件内容,必须先关闭文件,然后以读的方式打开。