2011-11-28 96 views

回答

2

你的问题可能是localfile包含一些容易混淆的字符,这使得外壳认为它应该得到更多信息。

试试,如果

import subprocess 
subprocess.call(['transmission', localFile]) 

改变的情况。


编辑:这当然是无稽之谈。

import subprocess 
subprocess.call(['transmission', url.split('/')[-1]]) 

应该是走的路上,与存储url.split('/')[-1]成然后可以替换表达式的两次出现的变量。

尽管如此,使用os.system()可能是危险的。最好留在subprocess.call()

+0

它的工作。但必须对其进行一些更改。而不是去subprocess.call(['传输',localFile]),我去了subprocess.call(['传输',URL])。 – Hick

+0

为什么使用os.system会有危险?好奇,因为我经常在工作中使用它。 – Hick

+2

您提供的文件名可能包含使命令行的解释与您想象的不同的字符。请注意,在类UNIX系统上,允许文件名包含除NUL字节和/以外的所有字符(因为后者用于路径分离)。如果你的文件现在被命名为'; rm -rf〜',你恰好执行'传输; rm -rf〜'这可能根本就不是你想要的。 – glglgl

2

localFile变量不包含文件名,而是包含文件句柄。文件句柄是标识文件的数字值,仅在当前执行过程中有效。但transmission等待文件名作为其参数,而不是文件句柄。

调用os.system()当尝试使用文件名作为参数传递给transmission

filename = url.split('/')[-1] 

localFile = open(filename,'w') 
localFile.write(f.read()) 
localFile.close() 

os.system("transmission %s" %(filename,)) 

(也不要忘记关闭文件,当你写完了数据)

+0

是的。我弄错了。感谢您的及时回复。纠正它。 – Hick

2

你确定你正在做你想做的事?

我看到你打开一个文件并调用系统命令transmission <open file 'somename', mode 'w' at 0x16824b0>,或者至少这是你通过转换文件d得到的。根据我的字符串,这并没有太大的意义,我