socket实现OS的切换目录
Posted god-for-speed
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket实现OS的切换目录相关的知识,希望对你有一定的参考价值。
#server层 # 切换目录 import socket import os sk = socket.socket() sk.bind((‘127.0.0.1‘,8080)) sk.listen() conn,addr = sk.accept() def send_data(conn,path): ‘‘‘你给我一个目录,我把目录发给client‘‘‘ lis_dir = os.listdir(path) str_dir = ‘--‘.join(lis_dir) #将目录列表转换为字符串形式 conn.send(str_dir.encode(‘utf-8‘)) abs_path = conn.recv(1024).decode(‘utf-8‘)# 获取用户输入的绝对路径 current_dir = abs_path + ‘/‘# 以下再处理,都要根据当前路径去处理,无论是返回上一层,还是进入下一层 send_data(conn,current_dir)# 把用户输入的路径下的所有文件及文件夹返回给客户端 # C:/Program Files (x86)/Common Files while 1: cmd = conn.recv(1024).decode(‘utf-8‘) if cmd == ‘..‘: current_dir = current_dir.split(‘/‘)[:-2] #-1是去掉转换后列表中的空格,-2是去掉按列表分隔后当前路径,即最后得到的是上一级的目录 current_dir = ‘/‘.join(current_dir)+‘/‘ #重新将列表转为字符串形式的当前路径的上一级路径 # if 如果当前是C盘: # 就返回给客户端告诉说没有上一层了! send_data(conn, current_dir) else: filename = cmd.split(‘ ‘)[1]# 获取用户输入的文件名字,因为传过来是两个数据cmd和文件名且按空格分隔,所以文件夹需要取到第二个元素 current_dir += filename + ‘/‘# 将文件名字添加到当前路径下,组成一个完整的新路径 if os.path.isdir(current_dir):# 如果客户输入的文件名字是一个文件夹 send_data(conn, current_dir) else:# 如果不是一个文件夹 conn.send(b‘不是文件夹‘) # conn.close() # sk.close() #client层 import socket import os sk = socket.socket() sk.connect((‘127.0.0.1‘,8080)) abs_path = input(‘请输入您的根目录:‘) sk.send(abs_path.encode(‘utf-8‘)) current_dir = sk.recv(1024).decode(‘utf-8‘) print(current_dir.split(‘--‘)) while 1: cmd = input(‘请输入>>>‘) # cd + 文件夹 .. if cmd == ‘..‘: sk.send(cmd.encode(‘utf-8‘)) current_dir = sk.recv(1024).decode(‘utf-8‘) print(current_dir.split(‘--‘)) if cmd == ‘cd‘: filename = input(‘请输入一个文件夹名:‘) sk.send((cmd+‘ ‘+filename).encode(‘utf-8‘)) current_dir = sk.recv(1024).decode(‘utf-8‘) print(current_dir.split(‘--‘)) 、 sk.close()
以上是关于socket实现OS的切换目录的主要内容,如果未能解决你的问题,请参考以下文章