我的fabfile.py(Centos 7机器)中有以下代码:
def deploy(version):
env.directory = os.path.join(env.config['home'], version, 've')
env.activate = os.path.join(env.directory, 'bin/activate')
env.version = os.path.join(env.config['home'],version)
print('this is the home dir')
print(env.config['home'])
print(env.version)
run('mkdir -v {}'.format(env.version))
在运行时,我收到以下错误:
[mcvitty] Executing task 'deploy'
this is the home dir
/home/mcvitty
/home/mcvitty/3.6.3
[mcvitty] run: mkdir -v /home/mcvitty/3.6.3
[mcvitty] Login password for 'webapp':
[mcvitty] out: mkdir: cannot create directory ‘/home/mcvitty/3.6.3’: File exists
[mcvitty] out:
Fatal error: run() received nonzero return code 1 while executing!
Requested: mkdir -v /home/mcvitty/3.6.3
Executed: /bin/bash -l -c "mkdir -v /home/mcvitty/3.6.3"
但是如果我在控制台上运行罪魁祸首,则mkdir可以正常工作:
/bin/bash -l -c "mkdir -v /home/mcvitty/3.6.3"
mkdir: created directory ‘/home/mcvitty/3.6.3’
我的代码怎么了?
我会说:当您可以使用python创建目录时,请勿使用外部命令创建目录。运行脚本时,由于某种原因,目录可能存在。然后将其删除。没关系。
为了避免目录存在时失败,只需在创建目录之前测试其是否存在。
if not os.path.isdir(env.version):
os.mkdir(env.version)
print("Created directory {}".format(env.version)
便携安全。