os.makedirs()遇到的報錯解決
本文基於Windows 10提出解決辦法
先貼出遇到的錯誤:
---------------------------------------------------------------------------
PermissionError Traceback (most recent call last)
<ipython-input-29-273e681a3508> in <module>
1 import os
2
----> 3 os.makedirs(os.path.join('..', 'data'), exist_ok=True)
4 data_file = os.path.join('..', 'data', 'house_tiny.csv')
5 with open(data_file, 'w') as f:
~\anaconda3\envs\d2l\lib\os.py in makedirs(name, mode, exist_ok)
221 return
222 try:
--> 223 mkdir(name, mode)
224 except OSError:
225 # Cannot rely on checking for EEXIST, since the operating system
PermissionError: [WinError 5] 拒絕訪問。: '..\\data'
出錯原因是寫入地址有誤
解決辦法:
需要將
os.makedirs(os.path.join('..', 'data'), exist_ok=True)
中的 .. 修改為存儲的地址即可解決,不過請注意輸入形式
os.makedirs(os.path.join('C:\\Users\\user\Desktop\\pytorch', 'data'), exist_ok=True)
python地址的輸入不能直接用“\”,否則會報錯,如上一句寫作
os.makedirs(os.path.join('C:\Users\user\Desktop\pytorch', 'data'), exist_ok=True)
則會出現新的報錯:
File "<ipython-input-30-f3bf8d74c287>", line 3
os.makedirs(os.path.join('C:\Users\qi\Desktop\pytorch', 'data'), exist_ok=True)
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
正確的方法應該是將“\”換為雙斜杠“\”或反斜杠“/”或者在前面加上“r”,保持字符原始值的意思
os.makedirs(os.path.join('C:\\Users\\user\Desktop\\pytorch', 'data'), exist_ok=True)
os.makedirs(os.path.join('C:/Users/user/Desktop/pytorch', 'data'), exist_ok=True)
os.makedirs(os.path.join(r'C:\Users\user\Desktop\pytorch', 'data'), exist_ok=True)
三種均可