#サーバーレイヤー #の 変更ディレクトリ のインポートソケット インポートOS SK = socket.socket、()、 sk.bind((' 127.0.0.1 '、8080 )) sk.listen() CONN、ADDR = sk.accept() DEF SEND_DATA(CONN、パス): '' ' あなたは私のカタログクライアントに送信、私にカタログを与える''' lis_dir = os.listdir(パス) str_dir = ' - ' .join(lis_dir) #は、ディレクトリのリストに文字列を変換し conn.send(str_dir.encode('UTF-8 ' )) 腹筋_経路 = conn.recv(1024).decode(「UTF-8 」)#は、ユーザ入力の絶対パスを取得 +とcurrent_dir =腹筋_経路を「/ 」#のいずれかで、電流経路に従って処理されるより少ない再処理前のレベルに戻りますまたは次のレベルに SEND_DATA(CONN、current_dir) #ユーザーによって入力されたフォルダパス内のすべてのドキュメントやファイルがクライアントに返されます #のC:/プログラムファイル(x86の)/共通ファイル 中に 1 : CMD = conn.recv(1024).decode(' UTF-8 ' ) であれば CMD == ' .. ' : current_dir = current_dir.split(「/ 」)[ - 2] #は-1、リスト変換の除去後空間-2電流経路リスト分離により除去し、得られた即ち最後がディレクトリである current_dir = 「/ 」 .join(current_dir)+ 「/ 」 #再リストの現在のパスのパス上の文字列に #現在のCドライブの場合IF: #は、 上の人がいないことを伝えるためにクライアントに返さ! SEND_DATA(CONN、current_dir) 他: ファイル名 = cmd.split(「 」)[1] #がそうデータ空間によって分離された2つのCMDおよびファイル名を介して送信し、第二のフォルダ要素を取得する必要があるため、ユーザによるファイル名入力を取得 current_dir + =ファイル名+ 「/ 」#は完全に新しいパスを形成するために、現在のパスにファイル名を追加します。 IF os.path.isdir(current_dir): #顧客入力のファイル名がフォルダの場合 SEND_DATA(CONN、current_dirは) 他:#それはフォルダではない場合 conn.send(bが' フォルダではありません' ) #はconn.close() #1 )sk.close( #クライアント层 輸入ソケット 輸入OS SK = socket.socket、()、 sk.connect((' 127.0.0.1 '、8080 )) 腹筋_経路 = INPUTは、(「あなたのルートディレクトリを入力してください:」) sk.send(abs_path.encode(' UTF-8 ' )) current_dir = sk.recv(1024).decode(' UTF-8 ' ) 、印刷(current_dir.split(' - ' )) しばらく 1 : CMD = INPUT(' 入力します>>> ' ) #のCD +フォルダ... IF CMD == ' ... ' : sk.send(cmd.encode(' UTF-8 ' )) current_dir = sk.recv(1024).decode(' UTF-8 ' ) プリント(current_dir.split(' - ' )) であれば、CMD == ' CD ' : ファイル名 = INPUT(「フォルダ名を入力してください:」) sk.send((CMD + ' ' +名).encode(' UTF-8 ' )) current_dir = sk.recv(1024).decode(' UTF-8 ' ) 、印刷(current_dir.split(' - ' )) 、 sk.close()