我正在尝试使用python的ftplib模块在ftp服务器上存储csv文件。 现在,我有大约30行代码,它们在二维数组中生成天气值的概率。然后我将这个二维数组写入csv文件。
当我将csv文件写入本地驱动器时,该文件在excel中按预期显示。但是,当我将文件上传到ftp服务器后查看该文件时,我发现每行后都添加了一个新的行字符。
我做了一些小测试,看看问题可能是什么,我已经能够使用coreftp上传csv文件了。我这样做后,csv文件显示正确。所以我很确定文件很好,当python将它上传到ftp服务器时会发生这种情况。
我最初使用.csv扩展名文件创建一个文本文件,然后将其重新打开为二进制文件并上传。我认为这可能是问题所以我尝试使用csv模块,但同样的问题。
这是我目前的代码......
TEMPSHEADER = [i-50 for i in range(181)]#upper bounds exclusive
WINDSHEADER = [i for i in range(101)]#upper bounds exclusive
HEADER = TEMPSHEADER + WINDSHEADER
for site in ensmosdic:
ensmos = ensmosdic.get(site)
with open(utcnow.strftime("%Y-%m-%d") + "-" +site+"-prob.csv","w",newline='') as csvfile:
writer = csv.writer(csvfile, delimiter=",")
writer.writerow(["CODE ","F","ForecastDate","HOUR"]+HEADER)
siteTable =[[0 for x in range(286)] for y in range(24,169)]#upper bounds exclusive
###########
#other code here, but not important with regards to post
###########
for i in siteTable:
writer.writerow(i)
csvfile.close()#not sure if you have to close csv file, not in csv module docs
f = open(utcnow.strftime("%Y-%m-%d") + "-" +site+"-prob.csv","rb")
ftpInno.storbinary("STOR " + utcnow.strftime("%Y-%m-%d-") + site +"-prob.csv",f)
f.close()
ftpInno.close()
提前致谢
答案 0 :(得分:0)
经过一个小时左右的故障排除后,答案相当简单,虽然我不完全确定它的工作原理。
我所做的是创建一个文本文件,而不是我在原始问题中所做的csv文件
with open(FILELOCATION + utcnow.strftime("%Y-%m-%d") + "-" +site+"-prob.txt","w") as f:
#write to the file below
f.close()
#open file again as a txt file
f = open(FILELOCATION + utcnow.strftime("%Y-%m-%d") + "-" +site+"-prob.txt","rb")
ftp.storlines("STOR " + utcnow.strftime("%Y-%m-%d-") + site +"-prob.csv",f)
f.close()
将文件作为二进制文件读取,然后使用storlines方法存储它,删除了我在将文件上传到ftp服务器后在文件中看到的额外行。
答案 1 :(得分:0)