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的切换目录的主要内容,如果未能解决你的问题,请参考以下文章

python小知识片段

python小知识片段

ssh+ftp+1

Python3目录操作

golang代码片段(摘抄)

socket编程模拟linux下的ssh代码实现