質問: "__main__": main() ``` **生じるエラー** 結構こういうエラーが起きます。 `FileNotFoundError: [WinError 3] 指定されたパスが見つかりません。: 'J:\\a.txt\\mkdir_file'` `[WinError 5] アクセスが拒否されました。` **何を聞きたいのか** `os`モジュールによる操作で、ファイルを作成したとき、ファイルに移動したとき、削除したとき、つなげた時、存在をチェックしたとき、現在のディレクトリを確認したとき等のファイルと、ディレクトリ指定の流れを確認したい。しくみを理解したい。 やろうと思えば、こうしたエラーは回避できないことはないのですが、その時のみで、根本の理解が出来ていないため、直ぐに忘れます。できれば後学参照のための知識のページにしたいです。ファイルの階層化なんて楽勝だというレベルになりたいです。 基本的には、以下の流れを実現したいです。 まず、ファイルの名前を決定する。 次に、ファイルを作りたい場所へと移る。 もし、既に同じ名前のファイルがあれば、それを消去し、改めて同じ名前のファイルを作る。(更新のため) 次に、一旦上の階層のファイルに戻ったりする。 そこに、新しいファイルを作り、そのファイルの中に入っていく。 これの繰り返しをしたいのですが、`os`操作の理解ができていないので、結構てこずるのです。根本的な理解が出来れば、するするといけるような気がするのですが。 **今のところの理解** ディレクトリとファイルは、入れ子状態で階層化されているというのは重々理解しているつもりです。しかし、実際それを`os`で操るときに、今どこにポイントが存在しているのか、頭の中で整理がついておりません。ひょっとして理解はできているのかもしれませんが、実際の変数の読み違いによるコードの置き方が問題なのかもしれません。`os`のメソッド群それ自体が、どのような機能を持っているのかはよくわかっています。 **参考となる可能性のあるリンク等** os--雑多なオペレーティングシステム os.path--共通のパス名操作 Win32エラーコード一覧
回答: 質問多すぎっす。全部記すには余白が足らない、のレベルですね。 には、パス名を操作する便利な関数とだけ書かれています。つまり「パス名」を操作するだけです。コンピュータは行間など読みませんから、マニュアルに書かれていないことはしません(マニュアルを書く側が、そのように心がける必要があります) `os.path` の階層の関数群は、作ったパス文字列で何かすることはありません。 同じく書かれていないことを勝手にしたりはしないので `os.mkdir` はディレクトリを作るだけで勝手に `os.chdir` しません。 `os.getcwd` はカレントディレクトリを返すだけです。 っていうか普通にコマンドプロンプト (Windows) なり、シェル (Linux) なり使ったことないですか?その経験がないからなんとなく納得できていないんだと思います。シェル窓で普通に `mkdir` したらディレクトリが作られるだけで勝手に `chdir` されません。 `pwd` したってカレントディレクトリは変わりません。ぜひ一度コマンドプロンプトなりシェル窓なりで心行くまで手でファイル・ディレクトリ操作してみてください。