f = urllib.urlopen(url) #Download the file
localFile = open(url.split('/')[-1],'w')
localFile.write(f.read())
os.system("transmission %s" %localFile)
我得到的错误是:
sh: Syntax error: end of file unexpected
512
答案 0 :(得分:2)
您的问题可能是localfile
包含一些令人困惑的字符,这使得shell认为它应该获得更多信息。
试试
import subprocess
subprocess.call(['transmission', localFile])
改变了这种状况。
编辑:当然,这是无稽之谈。
import subprocess
subprocess.call(['transmission', url.split('/')[-1]])
应该是一种方法,将url.split('/')[-1]
存储到变量中,然后可以替换该表达式的两次出现。
然而,使用os.system()
可能很危险。最好留在subprocess.call()
。
答案 1 :(得分:2)
localFile
变量不包含文件名而是文件句柄。文件句柄是一个标识文件的数值,仅在当前执行过程中有效。但transmission
等待文件名作为参数,而不是文件句柄。
在调用transmission
时尝试使用文件名作为os.system()
的参数:
filename = url.split('/')[-1]
localFile = open(filename,'w')
localFile.write(f.read())
localFile.close()
os.system("transmission %s" %(filename,))
(另外,不要忘记在完成数据写入后关闭文件)
答案 2 :(得分:2)
你确定你正在做你想做的事吗?
我看到你打开一个文件并调用系统命令transmission <open file 'somename', mode 'w' at 0x16824b0>
,或者至少是你通过转换文件d得到的。根据我说,这对我来说没那么有意义