创建缺失的目录/文件结构 - Python

3

我正在编写一个操作 .log 文件的函数: 程序会在执行之前检查是否存在 /logs/ansible.log。如果不存在,则程序会自动创建文件/目录结构(两者都不存在)。

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('/logs')请参阅https://dev59.com/L3VC5IYBdhLWcg3wfxU8 - fiacre
1
@fiacre 我已经知道了...我想一次性创建/logs/ansible.log...看看我在问题中是如何引用它的。 - cybertextron
无论是Python还是其他编程语言,操作系统都不会一次性创建所有内容... - Sylvain Biehler
1
但是,在shell中这是不可能的——如果/logs不存在,你无法用单个命令创建/logs/ansible.log。与shell一样,在Python中,您必须先创建目录,然后再创建文件。 - fiacre
1个回答

6
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')

否则,这是不可能的。操作系统没有提供一个单独的函数来执行此操作,因此任何其他存在的执行此操作的东西都必须具有类似上述逻辑的功能。只是对您不太可见。但由于它根本不存在,您可以自己创建它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接