很抱歉,如果这是重复的 - 无法通过搜索找到答案。
如何在Django视图文件中运行Unix命令?我想运行'cp'命令来复制刚刚上传的文件。
提前致谢。
答案 0 :(得分:10)
答案 1 :(得分:3)
实际上,运行系统程序的首选方法是使用子进程模块,如:
import subprocess
subprocess.Popen('cp file1 file2',shell=True).wait()
子进程模块是os.system和其他旧模块和函数的替代品,请参阅 http://docs.python.org/library/subprocess.html
当然,如果您只是需要复制文件,可以使用shutil模块中更方便的函数copyfile
答案 2 :(得分:1)
在Python中:
import os
if os.system("cp file1 file2") == 0:
# success
else:
# failure
答案 3 :(得分:1)
我会使用iterpipes,这会减少'By Hemidall的胡须,什么是粗俗的语法!'一个人在使用子流程时会倾向于思考。
答案 4 :(得分:0)
对于一般情况,我建议subprocess.Popen()
。它比os.system()
更灵活。
答案 5 :(得分:0)
最好将Popen / PIPE用于那种东西。
from subprocess import Popen, PIPE
def script(script_text):
p = Popen(args=script_text,
shell=True,
stdout=PIPE,
stdin=PIPE)
output, errors = p.communicate()
return output, errors
script('./manage.py sqlclear my_database_name')
我不建议使用 os.system ,因为它有很多限制。
正如Python documentation所说:
这是通过实现的 调用标准C函数 system(),并且具有相同的功能 限制。对sys.stdin的更改, 等不反映在 已执行命令的环境。