2017-02-13 6 views
0

Я пытаюсь создать каталог на python, но пока я использую окна, и у меня небольшие проблемы.Ошибка создания каталога с помощью python в Windows

Мой код из 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

Backtrace показывает 'os.makedirs (newpath)', который не отображается в коде, который вы показываете. – cdarke

+0

В Windows не разрешены управляющие символы, такие как вкладка (т. Е. '' \ T'') в именах файлов. Упростите свою жизнь, используя косые черты и нормализацию через 'os.path.normpath'. Обычно вы можете использовать прямую косую черту непосредственно в Windows, но есть граничные случаи, поэтому я рекомендую нормализовать строковые литералы, которые используют косые черты. Pathlib в Python 3 делает это легко. – eryksun

ответ

0

Вы действительно проходите путь как: 'D:\temp\lixo'? Попробуйте выйти из обратной косой черты, например: 'D:\\temp\\lixo'. Для получения дополнительной информации об экранировании строк вы можете обратиться к documentation.

0

Для окон нужно изменить направление слэш здесь:

# 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, все ваши косые черты должны быть экранированы. i.e '\' вместо '\'

 Смежные вопросы

  • Нет связанных вопросов^_^