运行在centos7:mkdir中的结构在控制台中工作,但不在fabfile.py中



我的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)

便携且安全。

最新更新