无法使用 os.system 下载文件

Unable to dowload file using 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_]+).*/\n/p")&id=0BzQ6rtO2VN95cmNuc2xwUS1wdEE" -O cnn_stories_tokenized.zip && rm -rf /tmp/cookies.txt'
 os.system(url)

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

有一种方法,你可以运行这个命令。我想你可能已经知道答案了。

将 linux 命令保存为 shell 脚本: 例如:vi downloader.sh

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_]+).*/\n/p")&id=0BzQ6rtO2VN95cmNuc2xwUS1wdEE" -O cnn_stories_tokenized.zip && rm -rf /tmp/cookies.txt

保存文件。从 python.

调用此文件
from subprocess import call
call(["bash", "downloader.sh"])

这是可以解决您问题的一种方法,也可以使用 python 库的其他替代方法,例如

requests package

are there any escape characters that I should be handling?

简短回答:是的。

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

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

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