请教一个关于 url 的问题

2017-02-26 20:30:52 +08:00
 Adia
大概的场景就是客户端那边给了一个 url ,到了 python 这边,要去调用 linux 的 shell ,做些 curl URL 和 wget URL 的操作。但是有些 URL 里面带了括号或者一些奇怪的东西。需要转义。感觉用正则太麻烦, 请问各位大佬有什么好办法吗?
2028 次点击
所在节点    Python
17 条回复
zjuhwc
2017-02-26 20:37:51 +08:00
只需要 curl 和 wget 的功能的话,几乎都可以用 requests 这个包来实现吧
Adia
2017-02-26 20:38:39 +08:00
@zjuhwc 项目里基本都是这么写的..要重构很麻烦
Adia
2017-02-26 20:38:45 +08:00
zjuhwc
2017-02-26 20:42:53 +08:00
哦,那转义为啥需要正则?
alcarl
2017-02-26 20:45:52 +08:00
不是应该做好 urlencode 然后再调用 shell 的么?(ಠ .̫.̫ ಠ)
Adia
2017-02-26 20:46:04 +08:00
@zjuhwc 用双引号包起来,如果 url 有"就麻烦了。\就要看哪些需要了,得用正则
zjuhwc
2017-02-26 20:48:59 +08:00
这个是转义,不是正则啊……你可以用三个引号的字符串来写命令,就不用担心双引号问题了
Adia
2017-02-26 20:51:16 +08:00
@alcarl 感谢
Adia
2017-02-26 20:53:41 +08:00
@alcarl 不过这样 curl 就没法用了..
@zjuhwc 不过这样 curl 就没法用了..
liyu4
2017-02-26 20:57:02 +08:00
多了\
alcarl
2017-02-26 21:01:30 +08:00
@Adia 为啥没法用了? curl 空格跟上编码好的 url 不可以么?
Adia
2017-02-26 21:16:00 +08:00
@alcarl 是的
@liyu4 什么?
loading
2017-02-26 21:21:35 +08:00
不给例子吗?
不过问题我看应该解决了,你应该是不了解 urlencode 的事。
akira
2017-02-26 21:28:01 +08:00
urlencode 两次,或者改成用类似 base64 编码处理一下
Adia
2017-02-26 21:36:25 +08:00
@loading 已解决,感谢。
@akira 两次怎么行..我一位朋友也和我讲过 Base64 ,不过好像不成啊。能给个 demo 吗
@alcarl 已解决,感谢
binux
2017-02-26 21:42:47 +08:00
python 调用 shell 为什么要转移?直接传参数列表过去不就好了
stranbird
2017-02-27 11:13:00 +08:00
重构还是值得的,毕竟现在你们已经遇到继续往下开发的瓶颈了。
具体做的时候可以用 https://curl.trillworks.com/来把 curl 命令自动转化成 request 的代码。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/343324

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX