我将文件从Django网站上传到我的WordPress。
from subprocess import check_call
try:
check_call(['scp', filename, upload_filename])
....
except (CalledProcessError, OSError):
report['error_messages'].append("4 %s" % exc_info()[1])
return report
这会出错:
命令' [' scp',' /uploads/test-01.txt', ' mysite.com:/home/wp-content/uploads/test-01.txt']'返回非零 退出状态1
现在, 如果我从控制台手动执行:
scp /uploads/test-01.txt mysite.com:/home/wp-content/uploads/test-01.txt
它在工作:
test-01.txt 100% 0 0.0KB/s 00:00
(它是一个空文件,所以0 KB)
我不明白为什么scp会从Django失败。错误不明确。我该怎么办?
答案 0 :(得分:0)
如果您暂时将代码更改为使用check_output
而不是check_call
,则可以捕获标准错误。
from subprocess import check_output, CalledProcessError, STDOUT
try:
check_output(['scp', filename, upload_filename], stderr=STDOUT)
except CalledProcessError as e:
print(e.output) # output from STDERR should show what is going wrong
这应该会给你一个提示是什么问题。如果Django网站以与您在控制台中测试命令时不同的用户身份运行,则可能是权限。