我正在尝试从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之后)有白色空格
数据从第二行开始
错误是什么意思?任何帮助将不胜感激。
答案 0 :(得分:1)
由于历史原因,错误消息只是询问您希望如何以不同方式处理换行符,您可以阅读解释here。
要解决此问题,请在private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
protected UIImplementationProvider getUIImplementationProvider() {
return new YourCustomUIImplementationProvider();
}
...bla bla blah
上指定newline
,如下所示:
StringIO
根据StringIO documentation。如果newline设置为None,则在所有平台上将换行符写为r = StringIO(newline='')
,但在读取时仍会执行通用换行解码。
答案 1 :(得分:1)
我可以部分重现和修复。该错误是由包含错误行尾的行引起的。我可以通过在其他有效csv文件的末尾添加一行\r \n
来重现。
修复它的一种简单方法是使用过滤器来消除空白行并清除行尾:
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)