(g)vim を使用して記述されたテキスト ファイルを含むディレクトリが多数あり、Python で役立つと思われるいくつかのユーティリティを記述しました。cygwin にインストールされている Python を使用するために、pound-bang-/usr/bin/env python 行でユーティリティを開始します。次のようなコマンドを入力したいと思います。
%cd ~/SomeBook
%which pythonUtil
/usr/local/bin/pythonUtil
%pythonUtil ./infile.txt ./outfile.txt
(または % pythonUtil someRelPath/infile.txt somePossivelyDifferentRelPath/outfile.txt)
pythonUtil: infile.txt が見つかりました。outfile.txt の書き込み; 完了 (または、もしあればそのようなもの)
しかし、私の pythonUtil プログラムは、infile.txt が見つからないというメッセージを出し続けます。ユーティリティを現在の作業ディレクトリにコピーすると、すべて問題ありませんが、ユーティリティのコピーがランドスケープに散らばっています。私は何をすべきですか?
さらに別の編集: 要約すると --- 私が欲しかったのは os.path.abspath('filename') でした。これは絶対パス名を文字列として返し、すべてのあいまいさが取り除かれます。
BUT: 使用されている Python が cygwin にインストールされている場合、絶対パス名は /home/someUser/someDir/someFile.txt のような CYGWIN 相対パス名になります。ただし、Python が Windows にインストールされている場合 (そして、ここでは cygwin ターミナル コマンドラインから呼び出されている場合)、絶対パス名は D:\cygwin\home\someUser のように、「ドライブ」から下の完全な Windows パスになります。 \someDir\someFile.txt.
教訓: cygwin Python が / をルートとしていないファイルに対して Windows 完全な絶対パス名を生成するとは思わないでください。事象の地平線を超えています。ただし、「/cygdrive/driveLetter」リードイン規則を使用してファイルのパスを指定すると、cygwin-python を使用して WinXP システム上の任意のファイルにアクセスできます。
注意: cygwin コマンドラインの WinXP パスでは、セパレータに「\」を使用しないでください。「/」を使用して、ヘビを信頼します。理由はわかりませんが、一部のセパレーターが削除され、パスが変更されて、「Documents and Settings\someUser」やその他の Windows ナンセンスなどの余分なレベルが含まれる場合があります。
私を正しい方向に押してくれたレスポンダーに感謝します。