首页 > 解决方案 > 无法使用 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)

在尝试使用终端上的相同命令下载文件时工作正常,是否有任何我应该处理的转义字符?

标签: pythonpython-3.xwget

解决方案


我应该处理任何转义字符吗?

简短的回答:是的。

字符串中有 \1 和 \n ,Python 尝试将其解释为正常的转义序列。

您可以通过将每个反斜杠加倍来手动转义它们,也可以将其转换为原始字符串。

要制作原始字符串,r只需在开头引号处添加'(使其成为r'wget...)。“原始”意味着 Python 将按原样使用它,而不是尝试解释看起来像转义码的东西(例如 r'\n' == '\n)。任何你有文件或正则表达式路径的地方,只需使用原始字符串,不用担心自己转义反斜杠,只需将你写的内容粘贴到其他地方!


推荐阅读