2015-11-09 35 views
7

プログラミングに慣れていません。下記のコードでエラーが発生しています:Python WindowsError:[エラー123]ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。

WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect. 

問題のある箇所が見つかりません。

import os 

folders = ["pdcom1", "pdcom1reg", "pdcomopen"] 


for folder in folders: 
    path = r'"C:\Apps\CorVu\DATA\Reports\AlliD\Monthly Commission Reports\Output\pdcom1"' 
    for file in os.listdir(path): 
     print file 
+4

一重引用符と二重引用符を使用します。それは問題かもしれません! – jkalden

+0

まあ、それだった!ありがとうございました。一重引用符の外に別の解決法が働いていると付け加えましたが、私はそれらを削除するのを忘れていたと思います。 – AlliDeacon

+2

デバッグのヒント:誤って動作していると思われる機能に入力するデータが正しいことを確認してください。単純な 'print(path)'は二重引用符が文字列の値の一部であることを示していました。 –

答えて

14

問題を解決して回答に入れました。

特に、生の文字列をの前に定義するときは、一重引用符と二重引用符を使用しないでください。

正しい呼び出しは、私はスパイダー内での作業に関連する問題があったが、問題は、エスケープ文字(「\」)との間の関係であるように思わその後、

path = r"C:\Apps\CorVu\DATA\Reports\AlliD\Monthly Commission Reports\Output\pdcom1" 

または

path = r'C:\Apps\CorVu\DATA\Reports\AlliD\Monthly Commission Reports\Output\pdcom1' 
-1

ですとパス名の "\"は 私のイラストと解決法は次のとおりです(ダブル\\ダブル)。

path = 'C:\Users\myUserName\project\subfolder' 
path # 'C:\\Users\\myUserName\\project\subfolder' 
os.listdir(path)    # gives windows error 
path = 'C:\\Users\\myUserName\\project\\subfolder' 
os.listdir(path)    # gives expected behavior 
+0

問題は文字列の二重引用符です。 OPはすでに文字列を生の文字列 'r" path "'に変換しているので、エスケープ文字は問題ではありません。 – DJK

関連する問題