2017-02-13 173 views
0

我試圖在python中創建一個目錄,但現在我正在使用windows,而且我遇到了一些麻煩。在Windows中使用python創建目錄時出錯

從app.py我的代碼是:

# Python Library 
    # -*- coding: UTF-8 -*- 

    import os 

    def create_directory(server_path, branch): 
     if not os.path.exists(rserver_path): 
      os.makedirs(rserver_path) 
     os.makedirs(server_path + "/" + branch) 

但是,當我運行代碼:

D:\tools\scripts>python 
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from app import * 
>>> create_directory('D:\temp\lixo','ProjectA_CO_4.2.x') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "app.py", line 18, in create_directory 
    os.makedirs(newpath) 
    File "C:\Python27\lib\os.py", line 150, in makedirs 
    makedirs(head, mode) 
    File "C:\Python27\lib\os.py", line 157, in makedirs 
    mkdir(name, mode) 
WindowsError: [Error 123] A sintaxe do nome do arquivo, do nome do diret¾rio ou do r¾tulo do volume estß incorreta: 'D:\temp' 

有人能幫助我嗎?

+0

Widows錯誤123是*文件名,目錄名稱或卷標語法不正確。*。我建議你使用'os.path.join()'來構造路徑。 – cdarke

+0

回溯顯示'os.makedirs(newpath)',它沒有出現在你顯示的代碼中。 – cdarke

+0

Windows不允許控制字符,如文件名中的製表符(即''\ t'')。通過使用正斜槓並通過'os.path.normpath'進行標準化來簡化您的生活。您通常可以直接在Windows中使用正斜槓,但有邊緣情況,所以我建議使用正斜槓來標準化字符串文字。 Python 3中的pathlib使得這很簡單。 – eryksun

回答

0

你真的通過這樣的路徑:'D:\temp\lixo'?嘗試轉義反斜槓,如下所示:'D:\\temp\\lixo'。有關字符串轉義的更多信息,請參閱documentation

0

對於windows,你需要在這裏改變斜線方向也:

# Python Library 
# -*- coding: UTF-8 -*- 

import os 

def create_directory(server_path, branch): 
    if not os.path.exists(rserver_path): 
     os.makedirs(rserver_path) 
    os.makedirs(server_path + "\\" + branch) # escaped backslash 

這應該幫助。另外,正如@lukeg所說,你所有的斜槓都需要被轉義。即'\'而不是'\'

相關問題