asc*_*d00 5 python csv ftp google-app-engine ftplib
我正在尝试从FTP服务器读取CSV文件,并在App Engine上解析它。我可以访问文件并读取文件,StringIO但是当我尝试遍历文件行时,它只是遍历每个字符而不是行。不知道我在这里做错了什么:
ftp = FTP('ftp.mydomain.com', 'username', 'pwd')
ftp.set_pasv(True)
r = StringIO()
ftp.retrbinary('RETR test.csv', r.write)
csvfile = csv.reader(r.getvalue(), delimiter=',')
for line in csvfile:
print line
Run Code Online (Sandbox Code Playgroud)
最终结果如下:
['O']
['R']
['D']
['E']
['R']
['N']
['O']
['', '']
['O']
['R']
['D']
['E']
['R']
['D']
['A']
['T']
['E']
['', '']
['I']
['N']
['V']
['O']
['I']
['C']
['E']
['N']
['O']
['', '']
...
Run Code Online (Sandbox Code Playgroud)
正确执行此操作并从FTP正确解析文件以便csv模块可以正确读取文件的正确方法是什么?
在换行符上分割长字符串;csv.reader()需要一个iterable,其中每次迭代都会产生一行。您给它一个字符串,迭代是针对单个字符的:
csvfile = csv.reader(r.getvalue().splitlines(), delimiter=',')
Run Code Online (Sandbox Code Playgroud)
您没有显示如何StringIO()导入。如果是python 版本( from StringIO import StringIO),您可以简单地返回到开头并直接将其传入:
r.seek(0)
csvfile = csv.reader(r, delimiter=',')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2863 次 |
| 最近记录: |