2015-06-01 34 views
2

我正在写一个函数,用.log文件做一些操作:程序在继续之前检查是否存在/logs/ansible.log。如果/logs/ansible.log不存在,它应该继续并创建文件/目录结构(两者都不存在)。创建一个缺少的目录/文件结构 - Python

try: 
    if not os.path.exists("/logs/ansible.log"): 
    # create the /logs/ansible.log file 
finally: 
    # do something 

我知道我可以open('ansible.log', 'w')创建ansible.log文件,并创建os.makedirs('/logs/')目录,但我怎么能简单地创建'/logs/ansible.log'一次?

***假设方案正在为root

+1

'os.makedirs( '/日志')' 参见http://stackoverflow.com/questions/273192/in-python-check-if-a-directory-exists-and-create-it如果需要的话 – fiacre

+1

@fiacre我已经知道了......我想一次创建'/ logs/ansible.log' ......看看我是如何在 – cybertextron

+0

这个问题中提到的,操作系统不会创建一次全部... –

回答

2
def createAndOpen(filename, mode): 
    os.makedirs(os.path.dirname(path), exist_ok=True) 
    return open(filename, mode) 

现在执行的,你可以打开该文件,并同时创建该文件夹:

with createAndOpen('/logs/ansible.log', 'a') as f: 
    f.write('Hello world') 

否则,这是不可能的。操作系统并没有给你一个这样做的单一功能,因此,无论是否存在这样的功能,都必须具有与上述类似的逻辑。对你不那么显眼。但由于它根本不存在,你可以自己创建它。

相关问题