【问题标题】:How to create a file name with the current date & time in Python?如何在 Python 中创建具有当前日期和时间的文件名?
【发布时间】:2021-10-19 20:11:06
【问题描述】:

这是一个功能代码(创建文件成功)

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

现在我正在尝试用当前日期/时间命名文件(我不是 Python 专家)

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'

【问题讨论】:

    标签: python


    【解决方案1】:

    虽然不使用datetime,但这可以解决您的问题(回答您的问题),即获取具有您指定的当前时间和日期格式的字符串:

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

    产量:

    20120515-155045
    

    所以你的文件名可以附加或使用这个字符串。

    【讨论】:

    • 明白了!我的脚本中没有定义时间,我试图使用 timedate(不工作,我不知道为什么),但随着时间的推移,现在很清楚,文件名是成功创建的。非常感谢!
    • 当有两个答案完美地解释了问题中的代码有什么问题时,我不知道你为什么接受这个答案。与 Levon 的做法没有什么不同,它工作得很好,但是当你说“不工作,我不知道为什么”时,这似乎很奇怪,因为你有解释原因的答案。
    • 当我尝试上面的代码时,我收到一个“E AttributeError: 'int' object has no attribute 'strftime'”错误。
    • @rwbyrd 这很奇怪,我只是用 Python 3.4.1 和 2.7.6 尝试了这 3 行(复制粘贴)并且它有效 - 尽管使用 Python 3 你需要使用 print(timestr) .您是否从上面复制了这段文字?否则可能是错字?
    • @rwbyrd 您可能在作用域的某个地方有一个名为“time”的 int 变量,它隐藏了 time 模块。
    【解决方案2】:

    改变这一行

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

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

    注意额外的datetime。或者,更改您的 import datetimefrom datetime import datetime

    【讨论】:

    • @B4NZ41 这不是真的。错误消息清楚地表明您的代码在某处有import datetime
    • ;) 对不起!现在我正在使用导入时间,在我使用导入日期时间之前
    • @B4NZ41 你现在在做什么并不重要。问题的内容很重要。
    【解决方案3】:

    now 是模块datetime 中类datetime 中的一个类方法。所以你需要

    datetime.datetime.now()
    

    或者你可以使用不同的导入

    from datetime import datetime
    

    通过这种方式,您可以按照问题中的代码使用datetime.now

    【讨论】:

      【解决方案4】:

      这个更易读。

      from datetime import datetime
      
      datetime.now().strftime("%Y_%m_%d-%I_%M_%S_%p")
      
      '2020_08_12-03_29_22_AM'
      

      【讨论】:

      • 是的,但按名称排序不会按时间顺序排序
      • 我猜只需要 YYMMDD 而不是 DDMMYY?
      【解决方案5】:

      我很惊讶没有一些单一的格式化程序返回默认(和安全)“用于附加文件名” - 时间格式, 我们可以简单地写FD.write('mybackup'+time.strftime('%(formatter here)') + 'ext'

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

      【讨论】:

        【解决方案6】:

        这里有一些我需要在文件夹名称中包含日期时间戳,以便从网络抓取工具中转储文件。

        # import time and OS modules to use to build file folder name
        import datetime
        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 语句)
        • 感谢 yosemite_k 添加导入日期时间。是的,oneindelijk 这是一种更安全的方式。
        【解决方案7】:

        这以易于阅读的格式打印 -

        import datetime
        
        time_now  = datetime.datetime.now().strftime('%m_%d_%Y_%H_%M_%S') 
        
        print(time_now)
        

        输出:02_03_2021_22_44_50

        【讨论】:

          【解决方案8】:
          import datetime
          
          def print_time():
              parser = datetime.datetime.now() 
              return parser.strftime("%d-%m-%Y %H:%M:%S")
          
          print(print_time())
          
          # Output>
          # 03-02-2021 22:39:28
          

          【讨论】:

          • 请在您的代码周围添加```。像这样:``` 代码 ``` -> code。还要添加一些解释。
          • 您不能在 Windows 上创建包含 : 的文件名。
          猜你喜欢
          • 1970-01-01
          • 2018-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-09
          • 2017-05-04
          • 2016-12-18
          • 2014-03-16
          相关资源
          最近更新 更多