newbie: write content in a file (server-side)
Thomas Kaufmann
tokauf at googlemail.com
Mon Jul 30 05:50:12 EDT 2012
Am Sonntag, 29. Juli 2012 17:16:11 UTC+2 schrieb Peter Otten:
> Thomas Kaufmann wrote:
>
>
>
> > I send from a client file content to my server (as bytes). So far so good.
>
> > The server receives this content complete. Ok. Then I want to write this
>
> > content to a new file. It works too. But in the new file are only the
>
> > first part of the whole content.
>
> >
>
> > What's the problem.
>
>
>
> > Here's my server code:
>
>
>
> > while True:
>
> > bytes = self.request.recv(4096)
>
> > if bytes:
>
> > s = bytes.decode("utf8")
>
> > print(s)
>
> > li = s.split("~")
>
> > with open(li[0], 'w') as fp:
>
> > fp.write(li[1])
>
>
>
> - Do you ever want to leave the loop?
>
>
>
> - You calculate a new filename on every iteration of the while loop --
>
> probably not what you intended to do.
>
>
>
> - The "w" argument tells Python to overwrite the file if it exists. You
>
> either need to keep the file open (move the with... out of the loop) or open
>
> it with "a".
>
>
>
> - You may not receive the complete file name on the first iteration of the
>
> while loop.
>
>
>
> - The bytes buffer can contain incomplete characters, e. g.:
>
>
>
> >>> data = b"\xc3\xa4"
>
> >>> data.decode("utf-8")
>
> 'รค'
>
> >>> data[:1].decode("utf-8")
>
> Traceback (most recent call last):
>
> File "<stdin>", line 1, in <module>
>
> UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 0:
>
> unexpected end of data
Thanks Peter. It helps;-).
More information about the Python-list
mailing list