10

Pythonでピリオドで終わるファイル名をどのように処理しますか?MSDNのサイトによると、このようなファイル名はWindowsで有効ですが、Pythonで作成しようとすると、最後のピリオドが削除されます。os.openを使用して生のファイル記述子を作成しようとしましたが、それでもピリオドが削除されます。

たとえば、これは単に' test'という名前のファイルを作成します

os.open('test.', os.O_CREAT | os.O_WRONLY, 0777)

編集:これが正確な見積もりです

ファイル名とディレクトリのスペースとドットについて。制限はWindowsシェルにあります-WindowsやNTではありません。'bash'を使用すると、ファイル名の最初と最後の両方にスペース(またはドット)を含むファイルを作成できます。次に、エクスプローラーでこれらのファイルを一覧表示して開くことができ、シェル(cmd.exe)でそれらのファイルを「一覧表示」できますが、必ずしもシェル(特に末尾のスペースとドット)から開くことができるとは限りません。

4

3 に答える 3

7

私はこれを行う方法を考え出しました。どうやら、通常のファイル名を渡すと、Cから直接Win APIを呼び出した場合でも、ピリオドが削除されます。奇妙なファイル名を作成するには、\\?\プレフィックスを使用する必要があります(これにより、相対パスとスラッシュ変換も無効になります)。

open('\\\\?\\C:\\whatever\\test.','w')

それは醜くてポータブルではありませんが、動作します。

于 2013-04-24T22:54:18.717 に答える
7

\\?\構文は次のものでも機能しcmd.exeます:

dir>"\\?\C:\whatever\test."
于 2013-06-13T22:15:10.327 に答える
-1

Windowsは、ファイル名と空白の拡張子の間の区切り文字であると想定して、最後の末尾のピリオドを削除します。2つの期間を使用してみてください。

于 2012-07-27T04:23:14.527 に答える