为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

12345678_0001 2019-01-24 11:00:35
 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这里名字有转移符,能不替换直接存码?因为在打开的时候总是因为‘/’找不到路径
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

首先,不论在Windows还是Unix系统下,文件名都是不可能含有'/'字符的。
对于字符串中包含相对路径的情况,例如"foo/bar",os.path的join方法是可以正确处理的,将'/'人为替换为'-'反而会导致找不到路径。
这里nameargv[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.


查看完整回答
反对 回复 2019-01-24
  • 1 回答
  • 0 关注
  • 1315 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信