2016-10-22 5 views
-1

私はパスとフォルダ内のファイル名で「\」を連結しようとしていますが、私は連結しようとすると、文字列リテラルのスキャン中に、私はEOLを取得しています:文字列の連結「」のpython

path = r"C:\Users\karth\Desktop\udacity\2000" 
add = '\' 
file = os.listdir(path) 
['2000Q1.zip', 
'2000Q2.zip', 
'2000Q3.zip', 
'2000Q4.zip', 
'Acquisition', 
'Performance'] 

print (path+ add + file[0]) 
+4

強調表示を見てください。あなたは '\ ''で引用符をエスケープしています。 – Li357

+2

なぜ 'path'には生の表記法を使用しますが、' add'には使用しませんか? – Goyo

+3

'os.path.join'関数はこれを正しく処理するためにあります – agg3l

答えて

-1

文字列内で\'を使用すると、文字列の一部として'がかかります(閉じ文字列の引用符ではありません)。 \はエスケープ文字として知られています。あなたのようにそれを記述する必要があります。以下、String Literals: Escape Characters文書を1として

add = '\\' 

はその意味を持つすべてのエスケープシーケンスのリストは、次のとおりです。

Escape Sequence  Meaning 
\newline   Ignored 
\\     Backslash (\) 
\'     Single quote (') # <---- Cause of error in your code 
\"     Double quote (") 
\a     ASCII Bell (BEL) 
\b     ASCII Backspace (BS) 
\f     ASCII Formfeed (FF) 
\n     ASCII Linefeed (LF) 
\r     ASCII Carriage Return (CR) 
\t     ASCII Horizontal Tab (TAB) 
\v     ASCII Vertical Tab (VT) 
\uxxxx    Character with 16-bit hex value XXXX (Unicode only (1) 
\Uxxxxxxxx   Character with 32-bit hex value XXXXXXXX (Unicode only) (2) 
\v     ASCII Vertical Tab (VT) 
\ooo    Character with octal value OOO (3,5) 
\xhh    Character with hex value HH (4,5) 
+0

それは私のケースで動作します –

2

使用os.path.join

path = r"C:\Users\karth\Desktop\udacity\2000" 
file = os.listdir(path) 

print(os.path.join(path, file[0])) 

またはglob.globを使用して、ディレクトリ全体のパスを一覧表示します。

import glob 
pattern = r"C:\Users\karth\Desktop\udacity\2000\*" 
filenames = glob.glob(pattern) 
print(filenames[0]) 
+0

これは完璧に働いてくれてありがとう –

+0

これをさらに良くするには、OPコードが最初に動作しなかった理由を説明してください:) – Li357