簡體   English   中英

在python中創建一個帶有日期的目錄

[英]Create a directory with the date in python

我正在嘗試在python中創建一個具有日期時間擴展名的文件夾,但是每次我遇到以下錯誤時

  File "create_dir.py", line 7, in <module>
    os.mkdir("/home/xxx/" + time.strftime('%Y%m%d'))
OSError: [Errno 2] No such file or directory: '/home/xxx/20190322'

這是我的代碼:

#!/usr/lib/python
import os
import time
os.mkdir("/home/xxx/" + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))

我在堆棧溢出中嘗試了此處提供的許多解決方案,但所有解決方案都引發了相同的錯誤。

您可能缺少import datetime ,而且,您應該使用makedirs而不是mkdir ,因為makedirs()創建所有中間目錄(如果不存在)

import os
import datetime
os.makedirs("C:\\Users\\PycharmProjects\\opencv-basics" + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))

輸出 (使用路徑創建一個文件夾):

C:\Users\PycharmProjects\opencv-basics2019-03-22_14-49-26

如果xxx或任何中間路徑不存在, os.mkdir將引發OSError 在創建任意目錄時,請使用os.makedirs ,以確保還會生成缺少的目錄:

import os
import datetime

os.makedirs("/home/xxx/" + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))

這是我建議的代碼修復方法:

#!/usr/lib/python
import os
import datetime
os.makedirs("/home/xxx/" + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))

這是我對自己所做的解釋:

我在您的代碼段中看不到datetime導入,但是,由於您沒有提及任何錯誤,我想您只是粘貼了舊版本的代碼。

確保您正在導入它。

關於主要問題,由於xxx文件夾不存在,因此應使用方法makedirs而不是makedir:

os.makedirs(path[, mode])

如果路徑尚不存在,此方法還允許您創建路徑。

這是官方文件

為了簡單起見,我還將在StackOverflow上復制相關部分:

os.makedirs(name,mode = 0o777,exist_ok = False)遞歸目錄創建功能。 與mkdir()相似,但是使所有中間級目錄都包含葉子目錄。

模式參數被傳遞給mkdir()來創建葉子目錄。 有關如何解釋的信息,請參見mkdir()描述。 要設置任何新創建的父目錄的文件權限位,可以在調用makedirs()之前設置umask。 現有父目錄的文件權限位不會更改。

如果exist_ok為False(默認值),則在目標目錄已存在的情況下引發OSError。

注意,如果要創建的路徑元素包含pardir(例如,在UNIX系統上為“ ..”),makedirs()將變得混亂。 此函數正確處理UNC路徑。

版本3.2中的新功能:exist_ok參數。

在版本3.4.1中進行了更改:在Python 3.4.1之前,如果exist_ok為True且目錄已存在,如果mode與現有目錄的模式不匹配,makedirs()仍會引發錯誤。 由於無法安全實現此行為,因此在Python 3.4.1中將其刪除。 請參閱bpo-21082。

在版本3.6中更改:接受類似路徑的對象。

在版本3.7中更改:mode參數不再影響新創建的中間級目錄的文件許可權位。

首先,您需要import datetime ,而不是時間。 然后,您要么想要使用os.makedirs來創建任何不存在的中間目錄,要么想要將我認為不是您的真實主目錄的xxx更改為它的實際主目錄。 測試了上面的代碼,它運行正常。

您可以使用os.system

import os
import datetime

path = "/home/xxx/"
current_time = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
command = "mkdir {0}".format(current_time)

os.chdir(path)
os.system(command)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM