在本文中,將記錄筆者今天遇到的一個Python問題,即:因爲操做系統的不一樣,保存文件名會產生問題。
咱們以Mac系統和Windows系統爲例,使用下面的Python腳原本保存一個Excel文件,代碼以下:python
# -*- coding: utf-8 -*- import xlwt, datetime # 建立一個workbook 設置編碼 workbook = xlwt.Workbook(encoding = 'utf-8') # 建立一個worksheet worksheet = workbook.add_sheet('My Worksheet') # 寫入excel worksheet.write(0, 0, label = 'this is test') # 保存 suffix= datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") workbook.save('./test_%s.xls' % suffix)
在Mac系統中運行上述代碼,會生成Excel文件,以下圖:
打開其中一個文件,內容以下:
可是一樣的代碼,咱們放在Windows系統中運行,會出現這樣的錯誤:web
Traceback (most recent call last): File "C:/Users/HP/PycharmProjects/Github_From_PyCharm/test_xlwt.py", line 14, in <module> workbook.save('./test_%s.xls' % suffix) File "C:\Users\HP\PycharmProjects\test\venv\lib\site-packages\xlwt\Workbook.py", line 710, in save doc.save(filename_or_stream, self.get_biff_data()) File "C:\Users\HP\PycharmProjects\test\venv\lib\site-packages\xlwt\CompoundDoc.py", line 262, in save f = open(file_name_or_filelike_obj, 'w+b') OSError: [Errno 22] Invalid argument: './test_2020-02-19 21:12:13.xls'
出現該錯誤的緣由並非咱們使用xlwt模塊的方式有問題,而是不一樣系統之間的差別,Windows系統的文件名中不容許出現/ \ : * " < > | 這幾個符號
。
所以,上述代碼會在Windows系統中報錯,而Mac系統不會。咱們在Window系統中使用上述代碼的時候,只須要將:(冒號)改爲其餘Windows系統支持的符號就能夠了。
這是筆者在開發時候遇到的坑,特此記錄,以作總結。關於Mac系統與Windows系統方面的差別,我以爲寫個總結是頗有必要的,留待下次分享。微信
本人的微信公衆號: Python之悟(微信號爲:easy_web_scrape),歡迎你們關注~