输出无法保存到文件

时间:2019-02-07 13:59:51

标签: python bash

我正在编写一个小的python脚本,在这里我还想通过使用 os.opopen()执行一些bash命令。我想将输出保存到文件,但是不起作用。我以前用过“>”,它始终有效。
我的代码:

curl https://r2---sn-4g5e6ne6.googlevideo.com/videoplayback?key=yt6&txp=5432432&mime=video%2Fwebm&pl=16&source=youtube&gir=yes&signature=6A07D1659991EC9A570BC6A0E9C10FB54E743DBC.DA7798D03282620987FC2FBDB020D3FE464851F3&fvip=2&requiressl=yes&sparams=aitags%2Cclen%2Cdur%2Cei%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cexpire&ei=sTFcXPqmN9PlgAeN6ZiYCQ&itag=247&ipbits=0&mm=31%2C26&mn=sn-4g5e6ne6%2Csn-i5heen7l&c=WEB&id=o-AHSObPeCuNcs7m1xagNdnC7zcHOvQEKkCrV9NDTw7g7a&initcwndbps=1722500&ip=132.187.12.151&clen=64580535&mt=1549545753&mv=m&dur=561.594&ms=au%2Conr&keepalive=yes&expire=1549567506&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&lmt=1541003190670111&ratebypass=yes > test.bin

bash命令本身可以正常工作。

我使用的Python命令:

os.popen("curl "+url+" > "test.bin") #url predefined

有什么想法可以解决问题吗?

2 个答案:

答案 0 :(得分:0)

在最新版本的Python中,os.popen()只是ServiceConnection.onServiceConnected()的包装,它只是启动一个进程。

您可能想要

subprocess.Popen()

subprocess.run()是一个更高级别的包装器,负责运行子流程以使其完成并适当地等待其完成,等等。from subprocess import run with open('test.bin', 'wb') as bin: run(["curl", url], stdout=bin, check=True) 从而Popen()并不这样做。

有关更多详细信息,另请参见Running Bash commands in Python

答案 1 :(得分:0)

我运行了您的代码,我相信您的代码中有一个不必要的“”,文件名和python会将test.bin读取为变量,而不是os.popen中的字符串...

os.popen("curl "+url+" > test.bin")

这对我有用,希望对您有所帮助:)