Python – AttributeError: 'Tupel' Objekt hat kein Attribut 'read'

Ich arbeite an einem einfachen Python-Client und Server, der Code in eine Datei schreiben kann, wie seine gesendet. Bisher habe ich mich bei diesem Fehler festgesetzt: AttributeError: 'Tupel' Objekt hat kein Attribut 'read'

Hier ist der Code des Kunden:

# CCSP Client # (C) Chris Dorman - 2013 - GPLv2 import socket import sys # Some settings host = raw_input('Enter the Host: ') port = 7700 buff = 24 connectionmax = 10 # Connect to server server = socket.socket() server.connect((host, port)) print 'Connected!' while True: open_file = raw_input("File (include path): ") fcode = open(open_file, "rb") while True: readcode = fcode.read(buff) server.send(readcode) if not fcode: server.send("OK\n") print "Transfer complete" break 

Server:

 # CCSP Server # (C) Chris Dorman - 2013 - GPLv2 import socket import sys import string import random def id_generator(size=6, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for x in range(size)) host = "0.0.0.0" port = 7700 buff = 1024 filepath = "/home/chris/" extension = ".txt" server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((host, port)) print "Server Started" while True: server.listen(1) conn = server.accept() print 'Client' + str(conn) print 'Generating a random file' filename = filepath + str(id_generator()) + extension fcode = open(filename, "wb") while True: if conn != 0: code = conn.read(buff) fcode.write(buff) if conn == "DONE": print 'Transfer complete' break #EOT 

Jede Hilfe beim Erhalten dieser Arbeit wäre ehrfürchtig. Ich code = conn.read(buff) einfach immer, dass dumme Fehler, wenn es runter kommt auf: code = conn.read(buff) auf dem Server-Skript

2 Solutions collect form web for “Python – AttributeError: 'Tupel' Objekt hat kein Attribut 'read'”

Wie andere schon erwähnt haben, accept() ein Tupel. Es sieht so aus, als wüsstest du das erste Element im Tupel, das ein neues Socket-Objekt sein wird.

Natürlich haben Sockets auch keine read() Methode. Ich vermute, dass das, was Sie eigentlich wollen, ist:

 code = conn.recv(buff) 

Als recv () gibt Daten zurück, die in eine Socket-Verbindung geschrieben wurden.

Sie sollten einige Dokumente lesen. accept() gibt ein Tupel kein Datei-ähnliches Objekt zurück.

Python ist die beste Programmiersprache der Welt.