python - 无法使用 os.system 下载文件
问题描述
我正在尝试在 python 中使用 os.system 下载文件,但它永远不会完全下载文件这是代码
import os
url = 'wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=0BzQ6rtO2VN95cmNuc2xwUS1wdEE" -O- | sed -rn "s/.*confirm=([0-9A-Za-z_]+).*/\1\n/p")&id=0BzQ6rtO2VN95cmNuc2xwUS1wdEE" -O cnn_stories_tokenized.zip && rm -rf /tmp/cookies.txt'
os.system(url)
在尝试使用终端上的相同命令下载文件时工作正常,是否有任何我应该处理的转义字符?
解决方案
我应该处理任何转义字符吗?
简短的回答:是的。
字符串中有 \1 和 \n ,Python 尝试将其解释为正常的转义序列。
您可以通过将每个反斜杠加倍来手动转义它们,也可以将其转换为原始字符串。
要制作原始字符串,r
只需在开头引号处添加'
(使其成为r'wget...
)。“原始”意味着 Python 将按原样使用它,而不是尝试解释看起来像转义码的东西(例如 r'\n' == '\n)。任何你有文件或正则表达式路径的地方,只需使用原始字符串,不用担心自己转义反斜杠,只需将你写的内容粘贴到其他地方!
推荐阅读
- python-3.x - Pandas Dataframe 在列上添加值,并在前面跳跃值
- smartcard - 如何发送 SET_UP_MENU 命令
- autodesk-forge - 多个模型坐标不匹配伪造查看器的问题
- javascript - 传单:使用 Promise 的样式
- java - 长按项目后如何在所有 listView 项目上添加复选框?安卓Java
- amazon-web-services - CloudFormation !Ref 未按预期工作
- python - 将字符串列表转换为元组列表
- c# - 计算来自 SSIS(C#)的收件箱中的电子邮件 - 远程服务器返回错误:(401)未经授权
- azure - Azure 数据工厂中基于行号的透视 - 映射数据流
- java - 获取值并作为参数传递给 Java 中的函数