📜  漂亮的打印 csv ubuntu 终端 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:27:03.972000             🧑  作者: Mango

漂亮的打印 CSV Ubuntu 终端 - Shell/Bash

在开发过程中,我们经常需要在命令行中打印 CSV 文件。通常情况下,CSV 文件很难在命令行中阅读,因为它不是人类可读的格式。但是,如果你想要打印一个漂亮的、易于阅读的 CSV 文件,你可以使用下面提供的方法。

使用命令行工具

你可以使用命令行工具 csvtool 来打印 CSV 文件。这个工具是一个用于处理 CSV 文件的命令行实用程序,它可以将 CSV 文件转换为其他格式,例如 HTML 和 SQL。

安装

使用以下命令安装 csvtool

sudo apt-get update
sudo apt-get install csvtool
打印 CSV 文件

要打印 CSV 文件,请使用以下命令:

csvtool format '%(1)s %(2)s %(3)s\n' your_file.csv

在上面的命令中,%(1)s%(2)s%(3)s 代表 CSV 文件中的第一列、第二列和第三列。你可以根据需要调整打印格式。例如,如果你的 CSV 文件有四列,你可以使用以下命令:

csvtool format '%(1)s %(2)s %(3)s %(4)s\n' your_file.csv

此命令将打印 CSV 文件的前四列。

打印 CSV 文件并添加标题

如果你想要在打印 CSV 文件时添加标题,请使用以下命令:

csvtool namedcol your_file.csv | csvtool format '%(name1)s %(name2)s %(name3)s\n%(1)s %(2)s %(3)s\n'

此命令将添加 CSV 文件的列标题并打印它。

使用 Python 脚本

你还可以使用 Python 脚本来打印漂亮的 CSV 文件。可以使用 csv 模块解析 CSV 文件并将其转换为易于阅读的格式。

代码示例

以下是一个使用 csv 模块打印 CSV 文件的示例 Python 脚本:

import csv

def print_csv(file_path):
    with open(file_path, newline='') as csvfile:
        reader = csv.reader(csvfile)
        longest_row = max([len(r) for r in reader])
        csvfile.seek(0)
        data = list(csv.reader(csvfile))
        widths = [max([len(str(row[i])) for row in data] + [len(str(i))]) for i in range(len(data[0]))]
        formatter = "{{:<{}}}  {{:<{}}}  {{:<{}}}".format(*widths)
        print(formatter.format(*[str(i) for i in data[0]]))
        print("-" * sum(widths))
        for row in data[1:]:
            print(formatter.format(*[str(i) for i in row]))

print_csv('your_file.csv')

在上面的脚本中,我们使用了 csv 模块来解析 CSV 文件,计算列宽度并格式化输出。在运行脚本时,需要将 your_file.csv 替换为实际的 CSV 文件路径。

结论

无论你是使用 csvtool 还是 Python 脚本,你都可以打印漂亮的 CSV 文件用于命令行。这将有助于提高数据处理的效率,尤其在开发中需要频繁进行数据处理操作的情况下。