< フォルダの作成・削除・移動

フォルダの作成・削除・移動

 今回はフォルダの作成・削除・移動をやってみましょう。

 System.IOのDirectoryクラスを使用する

 System.IOのDirectoryクラスを使用してみます。インタラクティブシェルを使って動作を確認してみましょう。
 >>> from System.IO import Directory
 >>> Directory.CreateDirectory("c:\\test1")
 <System.IO.DirectoryInfo object at 0x000000000000002D [test1]>
 >>> Directory.Move("c:\\test1", "c:\\test\\test1") ←実はReName
 >>> Directory.Delete("c:\\test\\test1")
 だいたい思い通りに実行させられたと思います。ただちょっと引っ掛けがMoveメゾットです。"Move"と書いているので移動しているように見えますが、実は"ReName"が実行されていて、ドライブ上で登録されているパスの名前が変更されているだけです。なので、ドライブが異なる場合、例えば"c:\"から"d:\"への移動を行おうとすると次のようにエラーが起こります。
>>> Directory.Move("c:\\test", "d:\\test")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: System.IO.IOException: ソースとターゲット パスは同一のルートを持たなければなりません。[移動] 操作はボリューム間で行えません。
場所 System.IO.Directory.Move(String sourceDirName, String destDirName)
場所 Microsoft.Scripting.Interpreter.ActionCallInstruction`2.Run(InterpretedF
rame frame)
場所 Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
場所 Microsoft.Scripting.Interpreter.LightLambda.Run5[T0,T1,T2,T3,T4,TRet](T0
arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
場所 IronPython.Compiler.Ast.CallExpression.Invoke2Instruction.Run(Interprete
dFrame frame)
場所 Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
場所 Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1
arg1)
場所 IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx)
場所 IronPython.Compiler.PythonScriptCode.Run(Scope scope)
場所 IronPython.Hosting.PythonCommandLine.<>c__DisplayClass1.<RunOneInteracti
on>b__0()

 System.IOのDirectoryInfoクラスを使用する

 今度はSystem.IOのDirectoryInfoクラスを使用して同じことをやってみましょう。
 >>> from System.IO import DirectoryInfo
 >>> di = DirectoryInfo("c:\\test1")
 >>> di.Create()
 >>> di.MoveTo("c:\\test\\test1")
 >>> di.Delete()
 これについては何も難しいことはないと思います。