1

(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 ナンセンスなどの余分なレベルが含まれる場合があります。

私を正しい方向に押してくれたレスポンダーに感謝します。

4

3 に答える 3

4

os.getcwd を見てください:

編集: 相対パスについては、os.path モジュールをご覧ください。

特に、os.path.join と os.path.normpath です。例えば:

import os
print os.path.normpath(os.path.join(os.getcwd(), '../AnotherBook/Chap2.txt'))
于 2009-07-13T01:35:42.267 に答える
0
os.chdir(my_dir)

また

os.chdir(os.getcwd())
于 2009-07-13T01:46:58.477 に答える
0

「ls」と入力するとどうなりますか? そこに「infile.txt」がリストされていますか?

于 2009-07-13T01:36:45.243 に答える