【问题标题】:Creating a missing directory / file structure - Python创建缺少的目录/文件结构 - Python
【发布时间】:2015-06-01 19:58:28
【问题描述】:

我正在编写一个对.log 文件执行一些操作的函数:程序在继续之前检查/logs/ansible.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 执行

【问题讨论】:

  • os.makedirs('/logs')stackoverflow.com/questions/273192/…
  • @fiacre 我已经知道...我想立即创建/logs/ansible.log ...看看我在问题中是如何提到的
  • python 与否,操作系统不会一次性全部创建...
  • 但是,这在 shell 中是不可能的——如果 /logs 不存在,你就不能用一个命令创建 /logs/ansible.log。与 shell 一样,在 python 中,您必须先创建目录然后创建文件。

标签: python


【解决方案1】:
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')

否则,这是不可能的。操作系统没有为您提供执行此操作的单个功能,因此无论存在什么其他功能,都必须具有与上述类似的逻辑。只是对你来说不太明显。但是由于它根本不存在,您可以自己创建它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2012-03-31
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多