在Windows 7下,有没有办法模拟&
OS X终端中角色的行为?
我正在尝试同时运行多个Wget实例:我可以在OS X下没有任何排序问题,因为我有一个Python脚本,它构建一个长字符串,其中Wget的每个实例都是&-separated。当我执行它时os.system()
一切都很顺利。
但是,在Windows下,这不起作用,并且实例按顺序运行。这不是我想要的。
我对所有建议cmd.exe
持开放态度:黑客,shell端口,更多Python,任何东西,只要创建新的Windows shell窗口。提前致谢!
编辑:我发现文件实际上是使用此方法下载的,但在Windows下,cmd.exe
只是突然执行,并让用户接受新命令。有没有办法避免这种情况,并保持控制台“挂起”,直到所有Wget实例完成下载?
编辑2:发布我正在使用的代码。
for track in album.tracks():
tracknum = track["track_num"]
tracktit = track["title"]
URL = track["file"]["mp3-128"]
filename = str(tracknum) + " - " + tracktit + ".mp3"
现在,在OS X下,这段代码运行得非常好。
execstr += 'bandcamp-support' +os.sep+ 'wget --tries=0 -O"{}" "{}" -q & '.format(filename,URL)
os.system('bandcamp-support' +os.sep+ 'wget' execstr[:-3])
相反,在Windows下,这不会复制我在OS X上遇到的行为。
os.system('start /B bandcamp-support' +os.sep+ 'wget --tries=0 -q -O"{}" "{}"'.format(filename,URL))
1
它不起作用?你究竟输入了什么?
—
Keltari 2013年
这是我用于每个Wget实例的命令:
—
Jetlef 2013年
os.system('start /B bandcamp-support' +os.sep+ 'wget --tries=0 -q -O"{}" "{}"'.format(filename,URL))
@Keltari
我不确定它是否这样做(因为我没有真正使用Windows命令行),但你应该考虑使用powershell而不是cmd.exe,因为它通常具有更多功能。
—
Evilsoup 2013年
stackoverflow.com/questions/2554514 / ...表明使用docs.python.org/2/library/subprocess.html#popen-objects可以轻松启动多个进程,并且只能同时与多个进程进行交互。docs.python.org/2/library/os.html#os.spawnl和v(但不是其他变体)声明也提供了一种在'Unix和Windows上运行NOWAIT进程的'旧'方式
—
dave_thompson_085 2015年