mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
Minimal changes to make ftplib work. Basically, this opens the stream in
text mode and encodes commands being sent. The default encoding is ASCII, there's a class/instance variable 'encoding' you could set to change it.
This commit is contained in:
parent
93adc5dfaf
commit
52b8976a03
1 changed files with 5 additions and 4 deletions
|
@ -94,7 +94,7 @@ class FTP:
|
||||||
below for details).
|
below for details).
|
||||||
The download/upload functions first issue appropriate TYPE
|
The download/upload functions first issue appropriate TYPE
|
||||||
and PORT or PASV commands.
|
and PORT or PASV commands.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
debugging = 0
|
debugging = 0
|
||||||
host = ''
|
host = ''
|
||||||
|
@ -103,6 +103,7 @@ class FTP:
|
||||||
file = None
|
file = None
|
||||||
welcome = None
|
welcome = None
|
||||||
passiveserver = 1
|
passiveserver = 1
|
||||||
|
encoding = "ASCII"
|
||||||
|
|
||||||
# Initialization method (called by class instantiation).
|
# Initialization method (called by class instantiation).
|
||||||
# Initialize host to localhost, port to standard ftp port
|
# Initialize host to localhost, port to standard ftp port
|
||||||
|
@ -128,7 +129,7 @@ class FTP:
|
||||||
self.timeout = timeout
|
self.timeout = timeout
|
||||||
self.sock = socket.create_connection((self.host, self.port), self.timeout)
|
self.sock = socket.create_connection((self.host, self.port), self.timeout)
|
||||||
self.af = self.sock.family
|
self.af = self.sock.family
|
||||||
self.file = self.sock.makefile('rb')
|
self.file = self.sock.makefile('r', encoding=self.encoding)
|
||||||
self.welcome = self.getresp()
|
self.welcome = self.getresp()
|
||||||
return self.welcome
|
return self.welcome
|
||||||
|
|
||||||
|
@ -167,7 +168,7 @@ class FTP:
|
||||||
def putline(self, line):
|
def putline(self, line):
|
||||||
line = line + CRLF
|
line = line + CRLF
|
||||||
if self.debugging > 1: print('*put*', self.sanitize(line))
|
if self.debugging > 1: print('*put*', self.sanitize(line))
|
||||||
self.sock.sendall(line)
|
self.sock.sendall(line.encode(self.encoding))
|
||||||
|
|
||||||
# Internal: send one command to the server (through putline())
|
# Internal: send one command to the server (through putline())
|
||||||
def putcmd(self, line):
|
def putcmd(self, line):
|
||||||
|
@ -403,7 +404,7 @@ class FTP:
|
||||||
if callback is None: callback = print_line
|
if callback is None: callback = print_line
|
||||||
resp = self.sendcmd('TYPE A')
|
resp = self.sendcmd('TYPE A')
|
||||||
conn = self.transfercmd(cmd)
|
conn = self.transfercmd(cmd)
|
||||||
fp = conn.makefile('rb')
|
fp = conn.makefile('r', encoding=self.encoding)
|
||||||
while 1:
|
while 1:
|
||||||
line = fp.readline()
|
line = fp.readline()
|
||||||
if self.debugging > 2: print('*retr*', repr(line))
|
if self.debugging > 2: print('*retr*', repr(line))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue