-1

ディスク上のファイルへの Windows パスを文字列 (文字列の一部: Error details are at "C:\Users\ADMINI~1\AppData\Local\Temp\2\BuildErrors.txt" Succeeded

したがって、返された結果を文字列変数にロードします。 s = '''Error details are at "C:\Users\ADMINI~1\AppData\Local\Temp\2\BuildErrors.txt" Succeeded''' file_path = s.split('"')[1] print file_path

> C:\Users\ADMINI~1\AppData\Local\Temp\BuildErrors.txt#(後にSTXアイコン付きTemp

file_pathPython シェルでにアクセスすると、次のように出力されます。

file_path 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\x02\\BuildErrors.txt'

\2Python では特殊文字として扱われることは理解していますが、パスが無効なため、ファイルを読み取ることができません。

外部関数から文字列を取得しているため、既に文字列オブジェクトがあり、私の知る限り、そこから生の文字列 ( r'') を作成することはできません。

s.encode('string-escape')ソース文字列を試してみましたが、そのまま\x02です。

を処理して有効なパスを生成するにはどうすればよい\2ですか?

4

2 に答える 2

1

それで、あなたはいくつかのことが起こっています。

1) Python 3 を使用する必要があります。

2)UNIXスタイルのパス区切り文字に切り替えたいだけの場合、モニックの答えは正しいです。Python では、Windows システムで UNIX スタイルのパスを使用できます。他の Windows シェルとプログラムはそうではないことを覚えておいてください。

3) ここに何が起こっているかです。文字列が fred.txt というファイルにある場合

>>> with open('fred.txt') as f:
...  derf = f.readline()
...
>>> derf
'Error details are at "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\2\\BuildErrors.txt" Succeeded'
>>> file_path = derf.split('"')[1]
>>> file_path
'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\2\\BuildErrors.txt'
>>> os.path.split(file_path)
('C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\2', 'BuildErrors.txt')
>>>

その後、すべてがうまくいくようです。Python シェルは、文字列を内部に保存する方法のために二重スラッシュを表示します。その値をファイルに書き込むか、画面に出力すると、次のようになります

>>> print(file_path)
C:\Users\ADMINI~1\AppData\Local\Temp\2\BuildErrors.txt
>>>

それでは、問題の核心に迫ります。スラッシュ文字 '\' は、Python 文字列で特別な意味を持ちます。システムに伝えるために使用されます。そのため、キーボードに表示されない文字を 16 進数または Unicode で指定できます。たとえば、文字列でシャープ記号を定義する 3 つの方法があります。http://python-reference.readthedocs.io/en/latest/docs/str/escapes.htmlを読むことをお勧めします

>>> a = "#"
>>> b = "\x23"
>>> c = "\u0023"
>>> a
'#'
>>> b
'#'
>>> c
'#'
>>> a == b
True
>>> a == c
True
>>> b == c
True
>>> 

では、'\' に特別な意味がある場合、本当にスラッシュが必要なだけであることをシステムに伝えるにはどうすればよいでしょうか? あなたはそれを逃れます!Python シェルの '\\' は、スラッシュが必要だと言っているだけです。

>>> s = "\\"
>>> s
'\\'
>>> print(s)
\
>>>
于 2016-05-21T07:30:55.617 に答える
0

文字列パスが「C:\ABC\xyz.txt」の場合、ステートメントは「C:\\ABC\\xyz.txt」を返します

Python ファイル処理の有効なパスにするには、C:/ABC/xyz.txt の形式にする必要があります。

パス = 'C:\\ABC\\xyz.txt' の場合

path = path.replace("\\","/")

パスは正しい形式です。

于 2016-05-21T06:28:58.150 に答える