从 ftp 服务器的 tar.gz 文件中提取 xml 文件列表
extracting list of xml files from tar.gz file from ftp server
我需要提取 xml 个文件的列表,这些文件位于我正在尝试读取的 tar.gz 文件中。
我试过这个:
import os
from ftplib import FTP
def writeline(data):
filedata.write(data)
filedata.write(os.linesep)
ftp = FTP('ftp.my.domain.com')
ftp.login(user="username",passwd="password")
ftp.cwd('inner_folder')
filedata = open('mytargz.tar.gz', 'w')
ftp.retrlines('RETR %s' % ftp.nlst()[0], writeline)
我使用 ftp.nlst()[0]
因为我的 ftp 中有 tar.gz 个文件列表。
看起来我在 writeline
回调中收到的 data
是一些奇怪的符号,而 filedata.write(data)
则抛出错误:
{UnicodeEncodeError}'charmap' codec can't encode character '\x8b' in position 1: character maps to <undefined>
。
我真的可以在这里得到一些帮助..
我没有 ftp 服务器可以尝试,但这应该可以:
import os
from ftplib import FTP
def writeline(data):
filedata.write(data)
ftp = FTP('ftp.my.domain.com')
ftp.login(user="username",passwd="password")
ftp.cwd('inner_folder')
filedata = open('mytargz.tar.gz', 'wb')
ftp.retrbinary('RETR %s' % ftp.nlst()[0], writeline)
请注意,我们使用 write binary 'wb'
打开文件,我们要求 ftp 到 return 二进制而不是文本,并且我们的回调函数只写而不添加分隔符
我需要提取 xml 个文件的列表,这些文件位于我正在尝试读取的 tar.gz 文件中。
我试过这个:
import os
from ftplib import FTP
def writeline(data):
filedata.write(data)
filedata.write(os.linesep)
ftp = FTP('ftp.my.domain.com')
ftp.login(user="username",passwd="password")
ftp.cwd('inner_folder')
filedata = open('mytargz.tar.gz', 'w')
ftp.retrlines('RETR %s' % ftp.nlst()[0], writeline)
我使用 ftp.nlst()[0]
因为我的 ftp 中有 tar.gz 个文件列表。
看起来我在 writeline
回调中收到的 data
是一些奇怪的符号,而 filedata.write(data)
则抛出错误:
{UnicodeEncodeError}'charmap' codec can't encode character '\x8b' in position 1: character maps to <undefined>
。
我真的可以在这里得到一些帮助..
我没有 ftp 服务器可以尝试,但这应该可以:
import os
from ftplib import FTP
def writeline(data):
filedata.write(data)
ftp = FTP('ftp.my.domain.com')
ftp.login(user="username",passwd="password")
ftp.cwd('inner_folder')
filedata = open('mytargz.tar.gz', 'wb')
ftp.retrbinary('RETR %s' % ftp.nlst()[0], writeline)
请注意,我们使用 write binary 'wb'
打开文件,我们要求 ftp 到 return 二进制而不是文本,并且我们的回调函数只写而不添加分隔符