6

プログラムで TMP 環境変数を使用しようとしています。頼むと

tmp = os.path.expandvars("$TMP")

私は得る

C:\Users\STEVE~1.COO\AppData\Local\Temp

古い学校のチルダ形式が含まれています。私が制御できない関数は、次のようなパスを返します

C:\Users\steve.cooper\AppData\Local\Temp\file.txt

私の問題はこれです。ファイルが一時ドライブにあるかどうかを確認したいのですが、それらを比較する方法が見つかりません。これらの 2 つの Windows ディレクトリをどのように確認しますか。

C:\Users\STEVE~1.COO\AppData\Local\Temp
C:\Users\steve.cooper\AppData\Local\Temp

同じだ?

4

2 に答える 2

8

標準 Python ライブラリのctypesのみを使用した代替ソリューションを次に示します。

tmp = unicode(os.path.expandvars("$TMP"))

import ctypes
GetLongPathName = ctypes.windll.kernel32.GetLongPathNameW
buffer = ctypes.create_unicode_buffer(GetLongPathName(tmp, 0, 0))
GetLongPathName(tmp, buffer, len(buffer))
print buffer.value
于 2010-10-14T09:28:22.707 に答える
4

http://sourceforge.net/projects/pywin32/の python win32 拡張機能が必要になるか、ActiveState によってパッケージ化された python を使用します

これらには、8.3 バージョンを完全パスに変換する関数 win32file.GetLongPathName が含まれています。

于 2010-04-29T15:31:34.133 に答える