0

我用 Python 编写了一个套接字编程代码。它应该能够在不同的计算机之间发送文件。我在同一台计算机上测试了我的代码(即通过从 2 个不同的文件夹发送文件)并且它可以工作。但是,当我尝试通过将文件从我的计算机发送到我朋友的计算机来测试代码时,我不断收到此错误:

 WindowsError: [Error 3] The system cannot find the path specified: 'C://Users//Admin//Desktop//SharedFiles/*.*' 

当我的 Python 程序尝试访问该client_side_folder变量时发生错误,如下所示:

client_side_folder = "C://Users//Admin//Desktop//SharedFiles"

我还尝试将其替换client_side_folder为“C:/Users/Admin/Desktop/SharedFiles”和“C:\Users\Admin\Desktop\SharedFiles”。但是两者仍然有相同的错误。

这个错误是否与 Python 如何处理 Windows 地址有关?如果是这样,当我尝试将文件从 1 个文件夹发送到同一台计算机上的另一个文件夹时,它是如何工作的?有什么想法可以解决这个问题吗?

编辑:

代码在遇到以下代码时崩溃:

        def listOfFiles(directory): 
                list_dir = os.listdir(directory) 
                return list_dir
4

2 回答 2

0

问题

正在破坏的代码是:

list_dir = os.listdir(directory) 

directory这意味着您的本地计算机中不存在指向的目录。

在您的代码中,您有

client_files = listOfFiles(client_side)
server_files = listOfFiles(server_side)

这是行不通的。

如果不os.listdir使用类似\\hostname\\path.

当您在同一台机器上运行服务器和客户端时,它都指向本地机器。

解决方案

方法 1:停止尝试获取远程机器的列表,让该机器上运行的代码为您完成。

方法2:使用远程访问URL(共享文件夹什么的)来访问远程机器的详细信息。

于 2013-03-23T18:44:29.763 回答
0

您可能会发现通过 os.path 模块在 python 中处理路径更容易。例如,如果您想访问用户主目录中的文件:

from os.path import expanduser, join

userhome = expanduser( '~' )
desktop = join( userhome, 'Desktop' )
shared_dir = join( desktop, 'SharedFiles' )
file_list = os.listdir( shared_dir )



这也意味着执行脚本的用户对您尝试访问的任何路径都具有访问权限。

附录 1

假设您使用的是 tcp 套接字,这是客户端和服务器的示例代码:

在您朋友的主机上运行的服务器:

import socket
serversocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
serversocket.bind( ( 'localhost', 13000 ) )
serversocket.listen(5) # 5 is the number of client connections that can be queued
while 1:
    #accept connections from outside
    (clientsocket, address) = serversocket.accept()
    # processing of the incoming connection
    ....

在您的主机上运行的客户端:

import socket
s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
s.connect( ( 'friendshost', 13000 ) )
s.send( .... )
于 2013-03-23T17:03:32.863 回答