2017-02-13 4 views
0

私はPythonでディレクトリを作成しようとしていますが、今はウィンドウを使用していますが、少し問題があります。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を参照してください。あなたもここでスラッシュ方向を変更する必要があり、Windows用の

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が述べたように、すべてのスラッシュをエスケープする必要があります。 '\'の代わりに '\'

関連する問題