python 中的文件路径转义,找不到文件位置

 name = data['items'][j]['name']
 link = data['items'][j]['url']
 r=requests.get(link)
 if '/' in name:    name = name.replace('/',"-")
 save_path = os.path.join(sys.argv[2], name)
 try:    with open(save_path, "wb") as code:        code.write(r.content)
 except Exception as e:
   pass

这里名字有转移符,能不替换直接存码?因为在打开的时候总是因为‘/’找不到路径


12345678_0001
浏览 1319回答 1
1回答

阿晨1998

首先,不论在Windows还是Unix系统下,文件名都是不可能含有'/'字符的。对于字符串中包含相对路径的情况,例如"foo/bar",os.path的join方法是可以正确处理的,将'/'人为替换为'-'反而会导致找不到路径。这里name和argv[2]的具体值你没有给,出现了什么错误也没有具体说明,这样几乎很难理解发生了什么。附os.path.join方法的说明os.path.join(path, paths)¶Join one or more path components intelligently. The return value is the concatenation of path and any members of *paths with exactly one directory separator (os.sep) following each non-empty part except the last, meaning that the result will only end in a separator if the last part is empty. If a component is an absolute path, all previous components are thrown away and joining continues from the absolute path component.On Windows, the drive letter is not reset when an absolute path component (e.g., r'foo') is encountered. If a component contains a drive letter, all previous components are thrown away and the drive letter is reset. Note that since there is a current directory for each drive, os.path.join("c:", "foo") represents a path relative to the current directory on drive C: (c:foo), not c:foo.Changed in version 3.6: Accepts a path-like object for path and paths.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python