要启用文本模式,请通过
universal_newlines=True
参数:
#!/usr/bin/env python3
import csv
from subprocess import Popen, PIPE
with Popen(["sort", "a.csv"], stdout=PIPE, universal_newlines=True) as p:
print(list(csv.reader(p.stdout, delimiter="\t")))
如果需要解释引号字段中嵌入的换行符,请创建
io.TextIOWrapper
,通过
newline=''
参数:
#!/usr/bin/env python3
import csv
import io
from subprocess import Popen, PIPE
with Popen(["sort", "a.csv"], stdout=PIPE) as p, \
io.TextIOWrapper(p.stdout, newline='') as text_file:
print(list(csv.reader(text_file, delimiter="\t")))
而且
TextIOWrapper
允许显式指定字符编码(否则为默认值)
locale.getpreferredencoding(False)
(已使用)。
注意:您不需要外部
sort
命令可以用纯Python对行进行排序:
#!/usr/bin/env python3
import csv
with open('a.csv', newline='') as text_file:
rows = list(csv.reader(text_file, delimiter="\t"))
rows.sort()
print(rows)
注意:更高版本对csv行而不是物理行进行排序(如果需要,可以对行进行排序)。