在写爬虫的时候,模仿了浏览器,点击下载,保存txt文件到本地,转为xlsl,再上传到服务器,大概这个过程,上传文件,一直卡在,txt转xlsx上,纠结了很长时间,还是同事发现我的问题,原来我是把txt上传到服务器了,
一开始的代码:
# 配出文件 转换为excel
# 获得当前目录下所有文件及目录
lists = os.listdir(downfile)
# 按时间排序
lists.sort(key=lambda fn: os.path.getatime(downfile + "/" + fn))
# 获得最新文件保存
file_new = os.path.join(downfile, lists[-1])
# print(file_new)
f = open(file_new,encoding="gbk")
wo = xlsxwriter.Workbook("%s.xlsx" % times)
sheet = wo.add_worksheet()
x = 0
while True:
# 按行循环,读取文本文件
line = f.readline()
if not line:
break # 如果没有内容,则退出循环
for i in range(len(line.split('\t'))):
item = line.split('\t')[i]
sheet.write(x, i, item) # x单元格经度,i 单元格纬度
x += 1 # excel另起一行
f.close()
wo.close()
print("准备上传到服务器")
time.sleep(2)
hftp = FTP(HOST)
hftp.login(USER, PASSWD)
# hftp.set_debuglevel(2)
# 切换目录
hftp.set_pasv(False)
hftp.cwd(senddirname)
try:
base = hftp.mkd(sendfiletime)
except:
print("目录已存在")
# 打开服务器目录
hftp.cwd(sendfiletime)
# 保存文件
time.sleep(3)
fp = open(file_new, "rb")
cmd = 'STOR %s' % os.path.basename(sendfile)
# hftp.storbinary('STOR %s' % os.path.basename(sendfile), open(file_new, 'rb'))
hftp.storbinary(cmd, fp)
hftp.close()
后来我改了一下,fp的时候,不应该匹配出最新的文件了,我修改了直接,匹配出转换出的名字,修改代码如下:
# 打开服务器目录
hftp.cwd(sendfiletime)
# 保存文件
time.sleep(3)
fp = open("%s.xlsx" % times, "rb")
cmd = 'STOR %s' % os.path.basename(sendfile)
# hftp.storbinary('STOR %s' % os.path.basename(sendfile), open(file_new, 'rb'))
hftp.storbinary(cmd, fp)
hftp.close()
和上面一样,保存的上面文件名,直接匹配什么文件名
txt转为xlsx 我用的是xlsxwriter