簡體   English   中英

無法使用Python套接字編程在計算機之間發送文件

[英]Unable to send files between computers using Python socket programming

我用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

您可能會發現通過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( .... )

問題

破壞的代碼是:

list_dir = os.listdir(directory) 

這意味着目錄指向的directory在您的本地計算機中不存在。

在您的代碼中,您有

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

這是行不通的。

如果不使用\\\\hostname\\\\path則無法使用os.listdir獲取遠程計算機(朋友的計算機)上的文件夾列表。

當您在同一台計算機上運行服務器和客戶端時,它既可以指向本地計算機,也可以用作本地計算機。

方法1:停止嘗試獲取遠程計算機的清單,然后讓在該計算機上運行的代碼為您執行此操作。

方法2:使用遠程訪問URL(共享文件夾或其他內容)來訪問遠程計算機的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM