python geçerli tarih ve saat ile bir dosya adı nasıl oluşturulur?


173

İşte fonksiyonel bir kod (Başarıyla dosya oluştur)

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

Şimdi dosyayı geçerli Tarih Saati ile adlandırmaya çalışıyorum (python konusunda uzman değilim)

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

Tam tarih ve saat ile bir dosya adı yazmak istiyorum, bu program zaten oluşturmuş bir xml dosyası, sadece dosyayı adlandırmak gerekiyor. Yukarıdaki kod çalışmıyor.

[EDITED] - Hata döndü

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

Bir ihtiyaç =arasında filenamevedatetime
Joel Cornett

Bunun dışında, "yukarıdaki kod tam olarak nasıl çalışmıyor"?
Joel Cornett

Böyle bir soru sunarken, "çalışmıyor" yeterli değildir. Tam olarak nasıl başarısız olduğunu açıklayın.
David Heffernan

1
Çalışmamakla ne demek istiyorsun? Bir hata oluşturuyor mu? Sonucun ne olmasını bekliyorsunuz? Sadece "çalışmıyor" demek çok yararlı değil.
Joel Cornett

1
Evet! Bu bölüm dışında doğru yaptım -> datetime.now () - - datetime.datetime.now () ama şimdi zaman kullanıyorum ..> dosyaadı = time.strftime ("% Y% m % d-% H% M% S ") sys.stdout = open (dosya adları + '.xml', 'w')
deepcell

Yanıtlar:


360

Bu datetime, kullanılmıyorken belirttiğiniz geçerli saat ve tarih biçimiyle bir dize alma sorununuzu (sorunuza cevap verir) çözer:

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

verim:

20120515-155045

böylece dosya adınız bu dizeyi ekleyebilir veya kullanabilir.


1
Anladım! zaman benim betiğimde tanımlanmadı ve ben timedate (çalışmıyorum, neden yapmıyorum) kullanmaya çalışıyordum, ama şimdi zamanla dosya adı başarıyla oluşturuldu. Çok teşekkür ederim!
deepcell

2
Sorudaki kodda neyin yanlış olduğunu mükemmel bir şekilde açıklayan iki cevap olduğunda neden bu cevabı kabul ettiğinizi bilmiyorum. Levon'un bunu yapma biçimine karşı hiçbir şey yok, iyi çalışıyor, ancak "işe yaramadı, nedenini bilmiyorum" derseniz tuhaf görünüyor çünkü nedenini açıklayan cevaplarınız var.
David Heffernan

Yukarıdaki kodu denediğimde, "E AttributeError: 'int' nesnesinin 'strftime' özniteliği yok hatası aldım.
rwbyrd

@rwbyrd Bu garip, ben sadece bu 3 satırları (kopyala-yapıştır) Python 3.4.1 ve 2.7.6 ile denedim ve işe yarıyor - Python 3 ile kullanmanız gerekiyor print(timestr). Bu metni yukarıdan kopyaladın mı? Belki başka türlü bir yazım hatası?
Levon

3
@rwbyrd Muhtemelen kapsamı içinde timemodülü gölgeleyen "time" adında bir int değişkeniniz vardır .
Thomas

38

nowdatetimemodüldeki sınıfta bir sınıf yöntemidir datetime. Yani ihtiyacın var

datetime.datetime.now()

Veya farklı bir içe aktarma kullanabilirsiniz

from datetime import datetime

Bu şekilde datetime.nowyapıldığında, sorudaki koda göre kullanabilirsiniz .


35

Bu satırı değiştir

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

için

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

Ekstralara dikkat edin datetime. Alternatif olarak, değiştirmek import datetimeTofrom datetime import datetime


1
@ B4NZ41 Bu doğru değil. Hata iletisi, kodunuzun bir import datetimeyerde olduğunu açıkça belirtir .
David Heffernan

;) Afedersiniz! ŞİMDİ İthalat
tarihini

2
@ B4NZ41 Şu anda ne yaptığınız önemli değil. Soruda ne olduğu önemlidir.
David Heffernan

16

Bu çok daha insan tarafından okunabilir.

from datetime import datetime

datetime.now().strftime("%d-%m-%Y_%I-%M-%S_%p")
'15-08-2019_11-57-48_PM'

Evet, ancak ada göre sıralama kronolojik olarak sıralanmayacaktır
Peter

Bu sadece DDMMYY yerine YYMMDD gerektirir sanırım?
Dev Aggarwal

5

Şaşırdım, varsayılan bir (ve güvenli) 'dosyaya eklemek için' döndüren tek bir biçimlendirici olmadığına şaşırdım - zamanın formatı, sadece yazabiliriz FD.write('mybackup'+time.strftime('%(formatter here)') + 'ext'

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

2

İşte dosyaları bir web kazıyıcıdan dökümü için klasör adına tarih-saat damgasını eklemem gerekiyor.

# import time and OS modules to use to build file folder name
import time
import os 

# Build string for directory to hold files
# Output Configuration
#   drive_letter = Output device location (hard drive) 
#   folder_name = directory (folder) to receive and store PDF files

drive_letter = r'D:\\' 
folder_name = r'downloaded-files'
folder_time = datetime.now().strftime("%Y-%m-%d_%I-%M-%S_%p")
folder_to_save_files = drive_letter + folder_name + folder_time 

# IF no such folder exists, create one automatically
if not os.path.exists(folder_to_save_files):
    os.mkdir(folder_to_save_files)

Yolunuzu oluşturmanın daha güvenli bir yolu folder_to_save_files = shutil.os.path.join(drive_letter, folder_name +folder_time)import shutilimport os
şunlar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.