Python 路径无效,不允许反斜杠

Python 路径无效,不允许反斜杠,python,dropbox,dropbox-api,Python,Dropbox,Dropbox Api,我正在尝试实现一个dropbox应用程序,它可以从用户的dropbox帐户下载文件。在用户的本地目录中创建目标路径时,它崩溃了 出现错误[400]{u'路径:u'无效路径/新文件夹\\img1.jpg:索引11处的字符不允许反斜杠} 我认为dropbox的文件夹层次结构使用正向斜杠来表示dorectories的嵌套,而windows使用反向斜杠,因此它们可能会相互冲突。然后我对不同的路径使用了python的BIF replace(),如下所示 样本路径。替换(“\\”,“/”) 但仍然 完整路径

我正在尝试实现一个dropbox应用程序,它可以从用户的dropbox帐户下载文件。在用户的本地目录中创建目标路径时,它崩溃了

出现错误[400]{u'路径:u'无效路径/新文件夹\\img1.jpg:索引11处的字符不允许反斜杠}

我认为dropbox的文件夹层次结构使用正向斜杠来表示dorectories的嵌套,而windows使用反向斜杠,因此它们可能会相互冲突。然后我对不同的路径使用了python的BIF replace(),如下所示

样本路径。替换(“\\”,“/”)

但仍然

完整路径

代码中的变量给出了包含反斜杠的路径,之后程序崩溃。 我的dropbox帐户中的文件夹层次结构是:

New Folder :
            Img1.jpg
dtu.jpg
img.jpg
代码是:

def download_file(self,source_path,target_path):
    print 'Downloading %s' % source_path
    file_path = os.path.expanduser(target_path)
    (dir_path,tail) = os.path.split(target_path)
    self.check_dir(dir_path)
    to_file = open(file_path,"wb")
    print source_path+"!!!!!!!!!!!!!!!!!!!!!!!!!!"
    source_path.replace("\\","/")        
    f= self.mClient.get_file(source_path) #  request to server !
    to_file.write(f.read())
    return
def download_folder(self, folderPath):


    # try to download 5 times to handle http 5xx errors from dropbox

    try:
        response = self.mClient.metadata(folderPath)
            # also ensure that response includes content
        if 'contents' in response:
            for f in response['contents']:
                name = os.path.basename(f['path'])
                complete_path = os.path.join(folderPath, name)
                if f['is_dir']:            
                    # do recursion to also download this folder
                    self.download_folder(complete_path)
                else:
                    # download the file
                    self.download_file(complete_path, os.path.join(self._target_folder, complete_path))
        else:
            raise ValueError
    except (rest.ErrorResponse, rest.RESTSocketError, ValueError) as error:
            print 'An error occured while listing a directory. Will try again in some seconds.'
            print "Error occured "+ str(error)

在Python控制台中尝试以下操作以查看问题:

>>> x = "hello"
>>> x.replace("hello", "goodbye")
'goodbye'
>>> x
'hello'
对字符串调用
replace
,实际上并不会修改该字符串。它返回一个带有替换项的新字符串。因此,您可能希望这样做:

source_path = source_path.replace("\\", "/")

您如何调用这些函数?你在windows上运行?函数调用链接为-main()->init_download()->download_folder(),是的,我在运行windowsbtw,在任何地方放置替换都没有帮助。使用路径模块将在不更换任何东西的情况下工作。仅在发送到服务器之前替换路径。@Loïc Faure Lacroix我已更新了代码。现在我只在调用服务器之前使用“replace()”。正如我所观察到的,在使用replace()之前的“source\u path”是:New Folder\img1.jpg,在使用replace(“\\”,“/”)之后,它保持不变!我在字符串上尝试了相同的函数,但它不起作用!它现在在控制台中打印什么?它是否包含“\\”或错误消息是否已更改?