2012-05-15 37 views
73

Dưới đây là một mã chức năng (Tạo tập tin với thành công)cách tạo tên tệp với ngày và giờ hiện tại trong python?

sys.stdout = open('filename1.xml', 'w') 

Bây giờ tôi đang cố gắng để đặt tên cho tập tin với các ngày Thời gian hiện tại (tôi không phải là một chuyên gia trong python)

filename1 = datetime.now().strftime("%Y%m%d-%H%M%S") 
sys.stdout = open(filename1 + '.xml', 'w') 

Tôi muốn viết ra một tên tập tin với ngày tháng và thời gian chính xác, nó là một tập tin xml, chương trình đã tạo, tôi chỉ cần đặt tên cho tập tin. Đoạn mã trên không hoạt động.

[EDITED] - Các lỗi trở

File "./fix.py", line 226, in <module> 
    filenames = datetime.now().strftime("%Y%m%d-%H%M%S") 
AttributeError: 'module' object has no attribute 'now' 
+0

bạn cần một '=' giữa 'tên tệp' và' datetime' –

+0

Ngoài ra, chính xác "mã trên không hoạt động" như thế nào? –

+0

Khi trình bày một câu hỏi như thế này, "không hoạt động" là không đủ. Mô tả chính xác cách nó không thành công. –

Trả lời

160

Trong khi không sử dụng datetime, điều này giải quyết vấn đề của bạn (trả lời câu hỏi của bạn) nhận được một chuỗi với thời gian hiện tại và định dạng ngày bạn chỉ định:

import time 
timestr = time.strftime("%Y%m%d-%H%M%S") 
print timestr 

sản lượng:

20120515-155045 

để tên tệp của bạn có thể nối thêm hoặc sử dụng chuỗi này.

+1

OK! thời gian không được xác định trong kịch bản của tôi và tôi đã cố gắng sử dụng tính giờ (không hoạt động, tôi không hiểu tại sao), nhưng với thời gian rõ ràng, tên tệp được tạo thành công. Cảm ơn bạn rất nhiều! – B4NZ41

+2

Tôi không biết tại sao bạn chấp nhận câu trả lời này khi có hai câu trả lời giải thích hoàn toàn tốt những gì đã xảy ra với mã trong câu hỏi. Không có gì chống lại cách Levon đã làm điều này, nó hoạt động tốt, nhưng khi bạn nói "không làm việc, tôi không biết tại sao", nó có vẻ kỳ lạ vì bạn có câu trả lời giải thích tại sao. –

+0

Khi tôi thử mã ở trên, tôi nhận được một, "E AttributeError: 'int' đối tượng không có thuộc tính 'strftime'" lỗi. – rwbyrd

26

now là phương pháp lớp trong lớp datetime trong mô-đun datetime. Vì vậy, bạn cần

datetime.datetime.now() 

Hoặc bạn có thể sử dụng một khẩu khác nhau

from datetime import datetime 

Xong cách này cho phép bạn sử dụng datetime.now theo mã trong câu hỏi.

+0

Cảm ơn sự trở lại! – B4NZ41

+0

+1 cho lần nhập thay thế, những gì tôi cũng đã viết. –

14

Thay đổi dòng này

filename1 = datetime.now().strftime("%Y%m%d-%H%M%S") 

Để

filename1 = datetime.datetime.now().strftime("%Y%m%d-%H%M%S") 

Lưu ý thêm datetime. Ngoài ra, hãy thay đổi import datetime-from datetime import datetime

+1

Cảm ơn, tôi chỉ sử dụng thời gian. – B4NZ41

+1

@ B4NZ41 Điều đó không đúng. Thông báo lỗi làm cho nó rõ ràng rằng mã của bạn có 'import datetime' ở đâu đó. –

+0

;) Rất tiếc! Bây giờ tôi đang sử dụng thời gian nhập khẩu, trước khi tôi đang sử dụng datetime nhập khẩu – B4NZ41

3

Tôi ngạc nhiên không có một số định dạng duy nhất mà trả về một mặc định (và an toàn) cho phụ trong filename '- định dạng thời gian, Chúng ta có thể chỉ đơn giản là viết FD.write('mybackup'+time.strftime('%(formatter here)') + 'ext'

"%x" instead of "%Y%m%d-%H%M%S" 
+0

Hoàn toàn đồng ý. Rất ngạc nhiên là người ta không tồn tại. Chúng ta phải thiếu cái gì đó. – Shaun

Các vấn đề liên quan