文章目录

  • 问题描述
  • 解决方案
    • 方法一:去除非法字符
    • 方法二:MD5
  • 封装
  • 参考文献

问题描述

Python 将 url 转换作为合法文件名

import urllib.requesturl = 'https://hfs.guijk.com/3016/5/1499410040252168/jpg/o/2'
filename = urllib.request.url2pathname(url)
print(filename)
# S:\hfs.guijk.com\3016\5\1499410040252168\jpg\o\2

不能直接作为文件名

解决方案

方法一:去除非法字符

import urllib.request
from itertools import zip_longestdef replace(x, old, new=None, strip=False) -> str:"""批量替换字符串内容:param x: 原始字符串:param old: 要替换的内容,可为 `str` , `list`:param new: 新内容,可为 `str` , `list` , `None`:param strip: 是否删除前后空格"""if not new:new = ''if isinstance(old, str):x = x.replace(old, new)if isinstance(old, list):for _old, _new in zip_longest(old, new, fillvalue=''):if _new == None:_new = ''x = x.replace(_old, _new)if strip:x = x.strip()return xdef url2filename(url):"""url转文件名"""filename = urllib.request.url2pathname(url)filename = replace(filename, ['S:', '.', '<', '>', '/', '\\', '|', ':', '*', '?'])return filenameif __name__ == '__main__':print(url2filename('https://www.xxx.com/0/1025759.png'))print(url2filename('https://www.xxx.com/3016/5/1499410040252168/jpg/o/2'))

简单版

import urllib.requestdef filename2url(filename):"""文件名可以合法对外映射"""filename = urllib.request.url2pathname(filename)for old in ['S:', '<', '>', '/', '\\', '|', ':', '*', '?', '#']:filename = filename.replace(old, '-')filename = filename.strip()return filenameprint(filename2url('1#2.docx'))
# 1-2.docx

方法二:MD5

import hashlibdef url2filename(url):'''基于MD5将url映射为唯一文件名:param url: str:return: str>>> url2filename('https://www.baidu.com/')'e81c1f5749545c5f7d247b3a100ffe62''''filename = hashlib.md5(url.encode('utf-8')).hexdigest()return filenameif __name__ == '__main__':filename = url2filename('https://www.baidu.com/')print(filename)

可结合字符串切片、pathlib.Path对文件进行目录分级,需要注意的是返回字符串是十六进制字符串,即0-F

封装

def vaild_filename(filename):"""转合法文件名"""olds = ['<', '>', '/', '\\', '|', ':', '*', '?']for old in olds:filename = filename.replace(old, '')return filenameprint(vaild_filename('1/<>:.jpg'))  # 1.jpg

参考文献

  1. python实现文件路径和url相互转换的方法
  2. Python中过滤Windows文件名中的非法字符

Python将url转换作为合法文件名相关推荐

  1. python使用正则表达式检测给定的URL地址是否合法

    python使用正则表达式检测给定的URL地址是否合法 # python使用正则表达式检测给定的URL地址是否合法 # python使用正则表达式检测给定的URL地址是否合法 # Check if a ...

  2. python批量将pdf转成word_如何用Python把pdf转换成word

    很多时候,我们需要把文件的形式来回转换.那么学了编程的小伙伴,我们该如何用Python把pdf转换成word呢? 一.下载所需要的库 1.pdfminer 安装库命令pip install pdfmi ...

  3. 用Python制作汇率转换小程序

    公众号后台回复"图书",了解更多号主新书内容 来源:菜J学Python 作者:王小王-123 01 引言 我记得有一个初识Python之汇率转换的文章,在那个程序里面可以运用一些基 ...

  4. Python将SVG转换成PNG图像

    继json和xml之后,需要处理SVG格式的图像数据.这次没有想象中的顺利,找了几种方案最后才成功. 转换SVG格式用到的是cairosvg库,但是安装的时候失败了很多次,主要是下载过程经常中断,需要 ...

  5. python下wordpdf转换总结

     python下wordpdf转换总结 近期涉及到了关于doc文档读取的处理,也查了很久,为了便于大家使用,故集大成一下. Doc文档读取有如下几种: 1.从doc读取文本 目前没有找到直接的方式 ...

  6. python把图片转化为素描画_python如何将图片转换素描画 python将图片转换素描画代码示例...

    python如何将图片转换素描画?本篇文章小编给大家分享一下python将图片转换素描画代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 代码如 ...

  7. 使用Python,OpenCV转换颜色空间,追踪对象的轨迹

    使用Python,OpenCV转换颜色空间,追踪对象的轨迹 1. 效果图 2. 源码 参考 这篇博客可以看作是之前俩篇博客的融合,将介绍如何使用Python,OpenCV转换颜色空间,并利用HSV追踪 ...

  8. 基于Python实现图画转换字符画

    微信改版,加星标不迷路! 基于Python实现图画转换字符画 作者:阿广 概述 前言 准备工作 识别原理 静态图像处理 动态图像处理 结果 阿广说 群聊交流 福利一刻 推荐阅读 前言 前几天写了基于P ...

  9. python下载的库要放到哪里-Python下载url并保存文件的三种方法

    本节主要内容: 学习python下载Url并保存文件的方法. Python中通常是使用Http利用urllib或urllib2模块来下载url中的内容. 当然也可以利用ftplib从ftp站点下载文件 ...

最新文章

  1. springboot 异步mysql_spring boot 使用@Async实现异步调用方法
  2. Java操作SQL Server数据库
  3. 022-红黑树(三)
  4. nginx绑定freenom.com域名
  5. 关于 p3p ie 跨域 问题
  6. Eclipse如何关闭在RUN/DEBUG时弹出窗口?
  7. python try else多余的设计_在python中利用try..except来代替if..else的用法
  8. LoadRunner函数中文翻译
  9. javaweb小区物业管理系统设计与实现(毕业论文+程序设计+数据库文件)
  10. ecshop微信登录php代码,Ecshop实现微信第三方授权扫码登录
  11. c语言变量报存在bss段,浅谈c语言代码段 数据段 bss段
  12. matlab中电压跟踪型pwm,新型数字锁相环实现对电压信号的无差跟踪
  13. python 当前日期的上一个月和后一个月
  14. python公开课乐博学院_乐搏学院 - 主页
  15. 关于测试中常用到的一些方法、策略总结
  16. MySQL存储生僻字解决方案
  17. java 过滤关键字 自定义字典库
  18. 软件开发模型和测试模型(瀑布模型,螺旋模型,增量、迭代,敏捷,敏捷中的测试,软件测试v模型,软件测试w模型)
  19. 织梦功能模块模板路径对应表
  20. 6-DOF-ConvGPD 基于未知物体三维点云特征的机器人六自由度抓取

热门文章

  1. Ubuntu18在4K显示器如何调分辨率
  2. 在python中计算夏普比率和特雷诺比率
  3. ADF4350调试记录及频点锁定
  4. Win11投屏时禁止通知的方法
  5. 【进阶四】Python实现(MD)HVRP常见求解算法——蚁群算法(ACO)
  6. 从罗永浩进军AR聊开
  7. 探索 Zynq MPSoC:配套 PYNQ 和机器学习应用一起使用 - 序言鸣谢目录20211231
  8. 彗星mysql_为什么彗星被认为是一个“脏雪球”?
  9. IDM无法找到服务器magnet IDM服务器禁止访问此文件
  10. HTTP (RESTful) API 响应时间分析及SLA定义