Python:双反斜杠格式

时间:2012-06-25 15:15:31

标签: python backslash

我正在尝试处理我的python程序中的文件地址并将其传递给MySQL。

我发现我需要使用原始字符串作为地址,以便它完整地连接到MySQL。 这有效:

myFilePath = r"'D:\\folder\\file.csv'"
sqlStatement = r"LOAD data local INFILE %s INTO TABLE test ...);" % (myFilePath)

但是,我正在创建一个GUI,并希望路径名可以改变。所以我试图将正常的文件路径转换为正确的格式,但我无法完成它。

如何转换

filePath = "D:\folder\file.csv"

采用与上面的myFilePath完全相同的格式?

到目前为止我提出的最好的是

myFilePath = r'r"' + "'" + filePath + "'"

但是我仍然需要加倍现有的反斜杠,我找不到任何方法来做到这一点。我试过迭代,像这样:

myFilePath = ""
for i in range(len(filePath)):
    if i == "\\":
        myFilePath += "\\\\"
    else:
        myFilePath += filePath[i]

但这不起作用,可能是因为反斜杠的逃逸性质。 再次使用原始字符串会产生比我想要的更多的反斜杠,而且我已经超出了我的深度。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

您不应该首先使用字符串格式来创建SQL语句。一旦你以正确的方式使用db接口,问题就会消失:

file_path = r"d:\folder\file.csv"
cursor.execute("LOAD data local INFILE %s INTO TABLE test ...);", file_path)

对SQL语句使用字符串格式化只会让自己受到SQL注入攻击。