質問: "__main__": main() ``` **結果** ``` os.getcwd()から得られたディレクトリです。 J:\ QFileDialogから得られたディレクトリです。 C:/Users/*******/hello.py ``` スラッシュが全く逆になる現象です。 気になるようだったら、(というかこの現象のせいで、ファイルの正確なディレクトリが取得できない問題に当たりました。)`replace`メソッドを行えば改善しますけれども・・・。 どうしてこんな現象がおきるのでしょうか? パイソンにも右利きと左利きがあるのでしょうか。OSによって違うのでしょうか。 また、皆様の環境ではどのようになりますか?
回答: `Qt` は同一のソースコードを OS によらず動かすためのものなので `Qt` 内の「パス」表記は `Linux` ベースのスラッシュ区切りを使います (Windows/Linux によらず) 。 `os.getcwd` は実行する OS に固有の「パス」を取得するものなので `print os.getcwd()` の結果は - python 2.7.5@hppa2.0w-hp-hpux11.11 上では `/home/john/tmp` - python 2.7.3@i686-pc-cygwin 上では `/cygdrive/c/CYGWIN/HOME/john/tmp` - python 2.7.14@x86_64-pc-cygwin 上では `/home/john/tmp` となりました。 Windows 上でも Linux っぽい機能を使うための cygwin では python もスラッシュ区切りを使うということのようです。 `Qt` 上でパスを扱う上ではパス区切りはスラッシュに統一すればよいです。 パスの取得には `Qt` の機能だけを使わないとはまります。混ぜるな危険。 Windows にあって Linux にない `\\.\COM10` みたいなパスを `Qt` 上で使うと Linux 非互換になっちゃいます。 `Qt` を使う以上は最初からそういうパスを扱わないよう/扱わなくて済むよう設計する必要がありそうです。