2020-04-18|python读取文件路径前面加r的原因

Python019

2020-04-18|python读取文件路径前面加r的原因,第1张

因为windows下的目录字符串中通常有斜杠道"\",而斜杠在回Python的字符串中有转义的作用。

例如:\n表示换行如果路径中有\new就会被转义。\t表示横向制表符,如果路径中有\title就会被转义.

加上r就是为了避免这种情答况。 

避免被转义的办法:

例如读取数据路径为:C:\desktop\小说.txt

1、利用正斜杠/

df=pd.read_csv('C:/desktop/小说.txt')

2、加上r表示字符串不被转义

df=pd.read_csv(r'C:\desktop\小说.txt')

文件的模式有很多种不一一列举,r+表示打开一个文件用于读写。文件指针将会放在文件的开头。

def readFile(path):

#R

with open(path,"r+") as f:

for line in f:

print(line)

f.close()

print("读文件完成")

path="D:\\tmp\\manim\\file\\1.txt"

readFile(path)

查找字符串位置,str.find(target) 返回起始点位置如果是-1则表示不存在

"123WWW".find("WWW")

文件指针偏移到指定位置

#文件路径,原字符串,要替换成的目标字符串

def replaceText(filePath,sourceText,targetText):

if(len(sourceText)!=len(targetText)):

raise Exception("原始字符串长度与目标字符串不符,容易覆盖有用信息", sourceText,targetText)

with open(filePath,'r+') as f:

line=f.readline()

index=0

# 遇到中间空行的可以自行观察并不是空字符串

while ( line!=""):

print(line)

# 本行内字符串所在位置

windex=line.find(sourceText)

if(windex!=-1):

print("windex={}".format(windex))

print("当前位置:{},替换内容起点:{}".format(f.tell(),index+windex))

f.seek(index+windex)

f.write(targetText)

# f.flush()

f.seek(index)

# 返回当前文件指针,应该是新一行的开始位置

index=f.tell()

line=f.readline()

f.close()

print("文件修改完毕")