python如何拼接時間戳到寫入的文件名中


問題描述:

  記錄一下拼接文件名時間戳的過程,回顧下可能的問題所在,希望能幫到同樣碰到這類問題的兄dei。

  進行單元測試時,最后使用HTMLTestRunner生成的HTML分析報告,需要添加一個時間戳來辨別,但是我寫好后,一直報錯:

if __name__ == '__main__':
    suite = unittest.TestSuite()
    tests = [TestCase("test_check_res")]
    suite.addTests(tests)
    now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())).decode('utf-8')
    print now, type(now)
    filename = setting.CASE_PATH + now + "result.html"  # CASE_PATH是獲取的當前目錄的絕對路徑
    with codecs.open(filename, 'w', 'utf8') as f:
        runner = HTMLTestRunner.HTMLTestRunner(stream=f, title='Test Report', description='HTMLTestRunner.',verbosity=2)
        runner.run(suite)

 

  報錯情況為:

 

E:\huang\test\unit_test>py -2 testing.py
Traceback (most recent call last):
  File "testing.py", line 43, in <module>
    open(filename, 'wb')
IOError: [Errno 22] invalid mode ('wb') or filename: 'E:\\huang\\test\\2019-08-13 22:16:43 testing12345.html'

 

 

解決步驟:

1、真的是搜了好久的:IOError: [Errno 22] invalid mode ('wb') or filename:這段報錯信息,大家的回復都是轉義字符的問題:  

  • The following reserved characters:

    • < (less than)
    • > (greater than)
    • : (colon)
    • " (double quote)
    • / (forward slash)
    • \ (backslash)
    • | (vertical bar or pipe)
    • ? (question mark)
    • * (asterisk)

 

2、仔細瞅瞅我的代碼,"%Y-%m-%d %H:%M:%S"中的:有問題,故修改為:

    now = str(datetime.datetime.now().strftime('%Y%m%d%H%M%S'))

完美解決,生成的文件名稱為:20190813221814 testing12345.html

3、拼接需注意的事項:

  1)路徑在前,時間戳、名稱等在后

  2)不能含有以上列表中的特殊字符

  3)要寫入特定編碼的文本文件,請效仿codecs的示例,寫入unicode,由codecs自動轉換成指定編碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM