2016-12-12 10 views
0

「C:\ Users ...」というマイクロソフトのパス名に「\ U」が含まれているため、Python 3でファイルを開こうとしていました。Python 3でファイルを開くときにUnicodeエラーが発生しました

    :私は以下のソリューションを提供し、この問題に対する他の回答を読んだ:「... 『unicodeescape』コーデック(Unicodeのエラー)バイトをデコードすることができないでSyntaxError」

    を私はエラーを取得しています

  1. ダブル "\ U"

  2. 生の文字列filename = R使用のユニコードエスケープする\ "C:\ユーザーを.."

  3. スイッチ/へ\を。

オプション1および/または2を使用するときはいつでも、「\」が2倍になります。 "C:\ Users \ ... ..."の代わりに 'C:\ Users \ ... ...'と表示されるため、ファイルパスが間違っています。

私はデータを操作するためにファイルを開こうとしていますファイルパスを変更することができないため、オプション3は使用できません。

エスケープ「\」または生の文字列を使用すると「倍率」が倍増する理由を説明できますか?

私は既に解決された問題に新しい質問をして申し訳ありませんが、他の回答にはコメントできませんでした。受け入れられた答え私のために働いていませんでした。あなたはそれでエスケープ文字(\)で文字列を持っており、Pythonはそれがrepr esentationだが表示される場合

おかげ

+1

あなたは1と2を一緒に、または別々に試していますか?実際に3を試してみましたか? – TigerhawkT3

+0

"\"から "/"への切り替え時にパスを実際に変更しているわけではなく、 'pwd'のデフォルトの形式であっても。>>> os.system(" pwd ") /Users/omer/Dropbox/school/16_fall' – yampelo

+0

私はすべての組み合わせを試しましたが、あなたの質問に答えるために私はほとんど別々に試しました。 – DavidBoyd

答えて

0

は、二重にする表示されます。

# in the REPL 
path = r'C:\Users\Nick' 

path 
# 'C:\\Users\\Nick' 

print(path) 
# C:\Users\Nick 

print(repr(path)) 
# 'C:\\Users\\Nick' 

あなたがそうで混同されています実際に含まれているものではなく文字列の表現を印刷するPythonのREPLです。選択肢1と2が同一である

注:

'C:\\Users\\Nick' == r'C:\Users\Nick' 
# True 

はまた、あなたは無効なエスケープを入力した場合(例えば'\D')、Pythonの意志は黙っ'\\D'にあなたのためにこれを修正することに注意してください。これにより、将来、ある時点でa DeprecationWarning in Python 3.6SyntaxErrorが発行されます。

1

元の回答が有効です。

オプション1:

file_path = "c:\\User\\USER\\SOMETHINGELSE" 
print(file_path); 

います:

c:\User\USER\SOMETHINGELSE 

スラッシュの横に文字をエスケープするが、それ自体は印刷されません。

オプション2:

file_path = r"c:\User\USER\SOMETHINGELSE" 
print(file_path); 

います:

c:\User\USER\SOMETHINGELSE 

をrは、それがどんなエスケープ文字を使用リテラルではなくとしてそれを取るために持っていることを文字列に指示します。

オプション3:

OK ...だからあなたは本当にオプション1または2を使用することができない場合は、使用できます。

import os 

file_path = os.path.join(os.path.abspath(os.sep), 'Users', 'USER', 'SOMETHINGELSE') 
print(file_path); 

この場合、「os.path.abspath (os.sep) 'は現在使用しているルートドライブを返します。私の場合はC:\。 'os.path.join'は、現在のシステムデリミタを使用して文字列を連結します。窓でこれは\です。オプション1または2が正常に動作する必要がありますときには、物事の奇妙な方法で、

C:\Users\USER\SOMETHINGELSE 

しかし:

結果があります。 オプションを一緒に使用しないでください。オプション1と2を組み合わせると、正しい結果が得られません。どちらか一方を使用してください。

関連する問題