首页 > 解决方案 > 从 FTP 文件夹中读取 csv

问题描述

我正在尝试从 FTP 文件夹中读取 csv 文件

ftp = FTP('adr')  
ftp.login(user='xxxx', passwd = 'xxxxx')
r = StringIO()
ftp.retrbinary('RETR /DataLoadFolder/xxx/xxx/xxx/'+str(file_name),r.write)
r.seek(0)
csvfile1 = csv.reader(r,delimiter=';')
input_file = [list(line) for line in csv.reader(r)] ----- Error

在最后一行出现错误

new-line character seen in unquoted field - do you need to open the file in universal-newline mode?

我的 .csv 文件

在此处输入图像描述

文字版
在此处输入图像描述

每行末尾都有空格(17:00 之后)

数据从第二行开始

错误是什么意思?任何帮助将非常感激。

标签: pythonftp

解决方案


我可以部分复制和修复。该错误是由包含错误行的行引起的。我可以通过\r \n在其他有效的 csv 文件末尾添加一行来重现。

一种简单的解决方法是使用过滤器来消除空行并清除行尾:

def filter_bytes(fd):
    for line in fd:
        line = line.strip()
        if len(line) != 0:
            yield(line + b'\r\n')

完成此操作后,您的代码可能变为:

ftp = FTP('adr')  
ftp.login(user='xxxx', passwd = 'xxxxx')
r = BytesIO()
ftp.retrbinary('RETR /DataLoadFolder/xxx/xxx/xxx/'+str(file_name),r.write)
r.seek(0)
csvfile1 = csv.reader(filter_bytes(r),delimiter=';')
input_file = list(csvfile1)

推荐阅读