कैसे अजगर में वर्तमान तिथि और समय के साथ एक फ़ाइल नाम बनाने के लिए?


173

यहाँ एक कार्यात्मक कोड है (सफलता के साथ फ़ाइल बनाएँ)

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

अब मैं वर्तमान तिथि समय (मैं अजगर में विशेषज्ञ नहीं हूं) के साथ फाइल का नाम रखने की कोशिश कर रहा हूं

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

मैं सटीक तिथि और समय के साथ एक फ़ाइल नाम लिखना चाहता हूं, यह एक xml फ़ाइल है, जिसे प्रोग्राम पहले ही बना चुका है, मुझे बस फ़ाइल का नाम देना है। उपरोक्त कोड काम नहीं कर रहा है।

[संपादित] - त्रुटि वापस आ गई

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

आपको एक के =बीच की ज़रूरत है filenameऔरdatetime
जोएल कॉर्नेट

इसके अलावा, वास्तव में "उपरोक्त कोड काम नहीं कर रहा है" कैसे है?
जोएल कॉर्नेट

इस तरह से एक प्रश्न प्रस्तुत करते समय, "काम नहीं करना" पर्याप्त नहीं है। वर्णन करें कि यह कैसे विफल होता है।
डेविड हेफर्नन

1
काम न करने से आपका क्या मतलब है? क्या यह एक त्रुटि उत्पन्न करता है? आप परिणाम होने की क्या उम्मीद करते हैं? "यह काम नहीं कर रहा है" कहने के लिए यह बहुत उपयोगी नहीं है।
जोएल कॉर्नेट

1
हाँ! मैंने सही किया, इस भाग को छोड़कर -> datetime.now () यह है -> datetime.datetime.now () लेकिन मैं अब समय का उपयोग कर रहा हूँ .. एक नज़र डालें -> फ़ाइल नाम = time.strftime ("% Y% m" % d-% H% M% S ") sys.stdout = खुला (फ़ाइल नाम + '.xml', 'w')
deepcell

जवाबों:


360

उपयोग नहीं करते समय datetime, यह आपकी समस्या (आपके सवाल का जवाब) को आपके द्वारा निर्दिष्ट वर्तमान समय और दिनांक प्रारूप के साथ स्ट्रिंग प्राप्त करने का हल देता है:

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

पैदावार:

20120515-155045

इसलिए आपका फ़ाइल नाम इस स्ट्रिंग को जोड़ या उपयोग कर सकता है।


1
पकड़ लिया! समय मेरी स्क्रिप्ट में परिभाषित नहीं किया गया था और मैं समयबद्ध (काम नहीं, मैं क्यों नहीं) का उपयोग करने की कोशिश कर रहा था, लेकिन समय के साथ अब यह स्पष्ट है, फ़ाइल नाम सफलता के साथ बनाया गया है। आपको बहुत - बहुत धन्यवाद!
१२:०२

2
मुझे नहीं पता कि आपने इस जवाब को क्यों स्वीकार किया जब दो उत्तर हैं जो पूरी तरह से अच्छी तरह से समझाते हैं कि प्रश्न में कोड के साथ क्या गलत था। लेवोन ने ऐसा करने के खिलाफ कुछ भी नहीं किया है, यह ठीक काम करता है, लेकिन जब आप कहते हैं "काम नहीं करता, तो मुझे पता नहीं क्यों", यह अजीब लगता है क्योंकि आपके पास उत्तर हैं जो बताते हैं कि क्यों।
डेविड हेफर्नन

जब मैंने ऊपर दिए गए कोड को आज़माया, तो मुझे एक "E AttributeError: 'int' ऑब्जेक्ट में कोई विशेषता 'स्ट्रैफ़ाइम" त्रुटि नहीं मिली।
rwbyrd 15

@rwbyrd यह अजीब है, मैंने पायथन 3.4.1 और 2.7.6 के साथ उन सटीक 3 लाइनों (कॉपी-पेस्ट) की कोशिश की और यह काम करता है - हालांकि पायथन 3 के साथ आपको उपयोग करने की आवश्यकता है print(timestr)। क्या आपने ऊपर से यह पाठ कॉपी किया है? शायद एक टाइपो अन्यथा?
लेवोन

3
@rwbyrd आपके पास शायद एक अंतरशील चर है जिसे "समय" कहा जाता है जो कहीं न कहीं उस दायरे में है जो timeमॉड्यूल को छायांकित कर रहा है।
थॉमस

38

nowdatetimeमॉड्यूल में कक्षा में एक क्लास विधि है datetime। तो आपको जरूरत है

datetime.datetime.now()

या आप एक अलग आयात का उपयोग कर सकते हैं

from datetime import datetime

इस तरह से आप datetime.nowप्रश्न में कोड के अनुसार उपयोग करने की अनुमति देता है ।


35

इस लाइन को बदलें

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

सेवा

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

अतिरिक्त नोट करें datetime। वैकल्पिक रूप से, अपने import datetimeको बदलें from datetime import datetime


1
@ B4NZ41 यह सच नहीं है। त्रुटि संदेश यह स्पष्ट करता है कि आपका कोड import datetimeकहीं है।
डेविड हेफर्नन

;) माफ़ करना! अब मैं आयात समय का उपयोग कर रहा हूं, इससे पहले कि मैं आयात
डेटाइम

2
@ B4NZ41 इससे कोई फर्क नहीं पड़ता कि आप अभी क्या कर रहे हैं। यह मायने रखता है कि सवाल में क्या है।
डेविड हेफर्नन


5

मुझे आश्चर्य है कि कुछ एकल फ़ॉर्मेटर नहीं हैं जो 'फ़ाइलनाम में संलग्न करने के लिए एक डिफ़ॉल्ट (और सुरक्षित)' लौटाते हैं - समय का प्रारूप, हम बस लिख सकते हैं FD.write('mybackup'+time.strftime('%(formatter here)') + 'ext'

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

2

यहाँ कुछ है कि मैं एक वेब खुरचनी से फ़ाइलों को डंपिंग के लिए फ़ोल्डर के नाम में दिनांक-समय टिकट को शामिल करने की आवश्यकता है।

# 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)

अपना रास्ता बनाने के लिए एक सुरक्षित तरीका, हो सकता है: folder_to_save_files = shutil.os.path.join(drive_letter, folder_name +folder_time)(एक import shutilबयान भी बयान की जगह ले सकता है import os)
oneindelijk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.