我试图在中编写一个代码来实现这个特殊情况记录在案。
路径,零:指示Dropbox上的路径上没有文件/文件夹。若要更新本地状态以匹配,请删除路径上的任何内容,包括任何子节点(有时还会为子节点“删除”增量条目,但这并不一定)。如果您的本地状态在路径上没有任何内容,请忽略此条目。
API注意到返回的[path]
不区分大小写。
记住: Dropbox以不区分大小写但保持大小写的方式处理文件名。为了便于这一点,上面的路径字符串是实际路径的小写版本.元数据集具有原始的、保留案例的路径。
如果我不知道路径的大小写保存版本,如何从我的系统中删除该文件或目录?
如果是相关的话,我的操作系统是Linux,不过我希望能找到一个在Windows上也能工作的解决方案(如果可能的话)。
发布于 2013-09-11 11:47:27
如果您需要能够使用原始大小写(例如,对于本地区分大小写的文件系统)从较低的大小写路径恢复路径,一种解决方案是将降低的路径映射到原始路径客户端。具体的实现细节取决于您,但是任何简单的键值存储都可能完成这项工作。
然后,当您获得这些删除之一时,可以使用此映射查找原始路径并相应地处理它。
发布于 2014-01-26 18:51:27
我知道这有点晚了,但我只是偶然遇到了同样的问题,想出了一个不同的解决方案。也许有人看到这个会更喜欢这种方法。
因为我的API只会在linux服务器上使用,而且对我来说删除相对较少,所以我依赖linux命令来帮助我。
# LINUX ONLY
cmd = "find {0} -iwholename '{1}'".format(basepath, caseInsensitivePath)
with os.popen(cmd) as f:
caseSensitivePath = f.read()[:-1] # -1 to remove the '\n'
# error if more than 1 line
if caseSensitivePath.find('\n') != -1:
print "Found multiple results including: \n", caseSensitivePath
msg = "[!]ERROR Could not delete {0}. Multiple case-sensitive results exist".format(caseInsensitivePath)
raise Exception(msg)
else:
return caseSensitivePath
basepath是查找的基本路径。我建议找到一种使用比root '/‘更精确的方法。在我的例子中,我已经有了一个同步文件夹中的路径列表,所以我能够进行如下比较:
caseInsensitivePath = caseInsensitivePath.lower()
# find basepath
basepath = assets_root
for folder in self.myDict.keys():
if caseInsensitivePath.lower().startswith(folder.lower()):
basepath = folder
caseInsensitivePath是路径名。
https://stackoverflow.com/questions/18734857
复制