通过os.system打开文件时出现意外的文件错误

时间:2011-11-28 11:01:49

标签: python

 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

3 个答案:

答案 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得到的。根据我说,这对我来说没那么有意义