2013-03-23 2 views
0

저는 Python으로 소켓 프로그래밍 코드를 작성했습니다. 그것은 서로 다른 컴퓨터간에 파일을 보낼 수 있어야합니다. 나는 동일한 컴퓨터 (즉, 2 개의 다른 폴더에서 파일을 전송함으로써)에서 코드를 테스트했고 작동한다. 내 친구의 컴퓨터에 내 컴퓨터에서 파일을 전송하여 코드를 테스트 할 때 그러나,이 오류가 계속 :Python 소켓 프로그래밍을 사용하여 컴퓨터간에 파일을 전송할 수 없습니다.

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

아래 그림과 같이 내 파이썬 프로그램이 client_side_folder 변수에 액세스하려고 할 때 오류가 발생합니다 :

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

또한으로 client_side_folder를 교체 시도 "C :/사용자/관리/데스크탑/SharedFiles"와 "C : 관리자 \ 바탕 화면 \ SharedFiles \ \ 사용자". 그러나 둘 다 여전히 같은 오류가 있습니다.

이 오류는 Python이 Windows 주소를 처리하는 방법과 관련이 있습니까? 그렇다면 같은 컴퓨터에있는 1 개의 폴더에서 다른 폴더로 파일을 보내려고 할 때 어떻게 작동합니까? 어떤 아이디어로이 문제를 해결할 수 있을까요?

편집 :

다음 코드와 공격 코드의 충돌 :

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

친구 컴퓨터에 해당 이름의 폴더가 있습니까? 보내기 코드를 게시하십시오. – ATOzTOA

+0

예, 해당 폴더가 있습니다. 프로그램이 전송 부분에 도달하기 전에 충돌합니다. 전체 프로그램을 충돌시키는 코드를 붙여 넣었습니다. – Sakura

+0

'numOfFileStatus()'함수는 어떻게 생겼습니까? – ATOzTOA

답변

0

당신은 그것을 쉽게을 os.path 모듈을 통해, 파이썬에서 경로를 처리하기 위해 찾을 수있는가. 예를 들어, 당신은 사용자의 홈 디렉토리에있는 파일에 액세스하려면 :

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(....) 
+0

내 컴퓨터에서 작동하지 못했습니다. 이 오류가 나타납니다. "WindowsError : [오류 3] 시스템에서 'Admin \\ Desktop/SharedFiles /*.*'"지정된 경로를 찾을 수 없습니다. – Sakura

+0

코드 스 니펫을 업데이트했습니다. 그것을 시도해보고 그것이 당신에게 효과가 있는지 말해 줄 수 있습니까? – ylabidi

+0

지금이 오류가 발생합니다. WindowsError : [오류 3] 시스템에서 'Admin \\ Desktop \\ SharedFiles /*.*'경로를 찾을 수 없습니다. – Sakura

0

문제는

파괴되는 코드는 다음과 같습니다

list_dir = os.listdir(directory) 

이 디렉토리가 로컬 컴퓨터에 존재하지 않는 directory가 가리키는 의미한다. 코드에서

, 당신은 작동하지 않습니다

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

있습니다.

os.listdir을 사용하면 \\hostname\\path 같은 것을 사용하지 않고 원격 컴퓨터 (친구의 컴퓨터)에서 폴더 목록을 가져올 수 없습니다.

동일한 컴퓨터에서 서버와 클라이언트를 실행하면 로컬 컴퓨터의 두 지점으로 작동합니다.

솔루션

방법 1 : 원격 시스템의 목록을 얻으려고 노력 중지하고 해당 시스템에서 실행되는 코드가 당신을 위해 그것을 할 수 있습니다.

방법 2 : 원격 컴퓨터의 세부 정보에 액세스하려면 원격 액세스 URL (공유 폴더 또는 무언가)을 사용하십시오.

+0

그렇다면 os.listdir에 IP 주소를 입력해야한다는 의미입니까? os.listdir (FRIEND_IP + PATH)와 (과) 비슷한가요? 그런 다음 경로에 대해 Users \\ Admin \\ Desktop \\ SharedFiles가되어야합니까? – Sakura

+0

그런 식으로 먼저 명령 프롬프트에서 원격 시스템에 대한 적절한 액세스 권한이 있는지 확인하십시오. – ATOzTOA

+0

제안 된 방법에 대해 더 설명해 주시겠습니까? 원격 컴퓨터에 대한 적절한 액세스 권한이 있는지 어떻게 확인합니까? – Sakura

관련 문제