视觉CSV读取器什么不保持文件“打开” [英] Visual CSV Reader what doesn't keep the file "open"
问题描述
我正在寻找一种方式来查看CSV文件,就像你会在Excel(很好的清晰布局)Excel的唯一问题是它不会通知您的更新,也不会关闭文件,一旦开放不像Notepad ++,它允许你看到文件被更新,它也允许你打开文件,然后操纵它让我们说python ...
唯一的问题Notepad ++是不可能轻松读取CSV的。
记事本++
- 优惠
- 此文件已被其他程序修改,您要重新加载吗?
- 视觉上载入资料后关闭档案。
- 可以轻松比较其他档案。
- 缺点
- 无清晰的视觉效果。
Excel
- strong>
- 清除视觉效果。
- >
- 视觉加载数据后不关闭文件。
- 文件修改后不提醒您
- 无法与其他档案轻松比较。
之前
数据,数据,datalongdatadatalongdata,datalongdata,datalongdata,data,data,data,datalongdata,data,data,data,datalongdata,datalongdata,数据
数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据
数据,数据,数据, ,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据
数据,数据,数据,数据数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据
数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据, $ b
之后(查看第5行
data'data
)
数据,数据,datalongdatadatalongdata,datalongdata,datalongdata,data,data,data,datalongdata,data,data,data,data ,datalongdata,datalongdata,data
data,data,data,data,data,data,data,data,data,data,data,data,data,data,data,data,data
data,data,data数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据, $ b数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,
数据,数据,数据,数据,数据
解决方案:)发现
TextFX
中的错误后,我决定使用Python Script
插件创建更好的东西。 p>
示例
它将转换以下示例:
heeey,this,is,a,testtttttttttt
34,3
123,123,123,123,123
To:
+ ------------- ---------------------------- +
| heeey |这个|是| a | testtttttttttt |
| 34 | 3 | | | |
| 123 | 123 | 123 | 123 | 123 |
+ ----------------------------------------- +
并且:
数据,数据,数据,数据,数据,数据,数据,数据,数据,数据
数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据
To:
+ -------- -------------------------------------------------- -------------------------------------------------- ------------------------------------------ +
| title1 | title2 | title3 | title4 | title5 | title6 | title7 | title8 | title9 |
+ --------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----- +
| datalongdata | datalongdata |数据|数据|数据| datalongdata |数据|数据|数据|
|数据|数据|数据|数据|数据|数据|数据|数据长度datadatalongdatadatalongdatadatalongdatadatalongdata |数据|
|数据| data'data |数据|数据|数据|数据|数据|数据|数据|
+ --------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----- +
安装
- 安装
Python Script
插件,从插件管理器
或从官方网站。 - 安装后,请转至
插件> Python脚本>新脚本
。为新文件选择一个文件名(例如pretty_csv.py
)并复制以下代码。 - 打开您的csv文件,然后运行
插件> Python脚本>脚本> pretty_csv.py
。这将会在您的表格中打开一个新标签页。
请注意,在脚本的前几行,一些参数。我希望变量名称是不言自明的!我想最重要的是布尔值,
border
和header
。 b
$ b#define parameters
delimiter =,
new_delimiter =|
border = True
border_vertical_left =|
border_vertical_right =|
border_horizontal = -
border_corner_tl =+
border_corner_tr =+
border_corner_bl =+
border_corner_br =+
= True
border_header_separator = -
border_header_left =+
border_header_right =+
newline =\\\
csv
content = editor.getText()
content = content.rstrip(newline)
rows = content.split(newline)
#find最大数量
如果max_columns> 0:
max_columns =列(所以具有不同列数的行是没有问题的)
max_columns = max([row.count(delimiter) max_columns + 1
#find每列的最大宽度
column_max_width = [0] * max_columns
对于行中的行:
用于索引,列在枚举中row.split(delimiter)):
width = len(column)
if width> column_max_width [index]:
column_max_width [index] = width
total_length = sum(column_max_width) + len(new_delimiter)*(max_columns-1)
#create新文档
notepad.new()
#应用更改
left = border_vertical_left if border is True else
right = border_vertical_right if border is True else
left_header = border_header_left if border is True else
right_header = border_header_right if border is True else
for row_number,enumerate(rows)中的行:
columns = row.split(delimiter)
max_index = len(columns)-1
用于索引范围(max_columns):
if index> max_index:
columns.append(''* column_max_width [index])
else:
diff = column_max_width [index] -len b $ b columns [index] = columns [index] +''* diff
如果row_number == 0并且border是True:#draw top border
editor.addText(border_corner_tl + border_horizontal * total_length + border_corner_tr + newline)
editor.addText(left + new_delimiter.join(columns)+ right + newline)#print新行
如果row_number == 0并且header为True:#draw header分隔符
editor.addText(left_header + border_header_separator * total_length + right_header + newline)
如果row_number == len(rows)-1并且border是True:#draw bottom border
editor.addText border_corner_bl + border_horizontal * total_length + border_corner_br)
else:
console.clear()
console.show()
console.writeError(No \%s\如果您发现任何错误或有任何建议,请告诉我!如果您发现任何错误或有任何建议,请告诉我!I'm looking for a way to view CSV files as you would in Excel (nice clear layout) the only issue with Excel is that it doesn't notify you of updates nor does it close the file once it's "open" unlike Notepad++ which allows you to see when the file is updated and it also allows you to have the file open then manipluate it in lets say python...
The only problem with Notepad++ is it's impossible to read a CSV easily..
Notepad++
- Pros
- "This file has been modified by another program, Would you like to reload it?"
- Closes the file once the data is loaded visually.
- Can compare against other files easily.
- Cons
- No clear visual viewer.
Excel
- Pros
- Clear visual viewer.
- Cons
- Doesn't close the file once the data is loaded visually.
- Doesn't alert you when the file has been modified by another program (you can't modify it if it's open in Excel)
- Can't compare to another file easily.
Anyone know of a program to help me?
Before
data,data,datalongdatadatalongdata,datalongdata,datalongdata,data,data,data,datalongdata,data,data,data,data,datalongdata,datalongdata,data data,data,data,data,data,data,data,data,data,data,data,data,data,data,data,data data,data,data,data,data,data,data,data,data,data,data,data,data,data,data,data data,data,data,data,data,data,data,data,data,data,data,data,data,data,datalongdatadatalongdatadatalongdatadatalongdatadatalongdata,data data,data,data,data,data,data,data,data,data'data,data,data,data,data,data,data,data data,data,data,data,data,data,data,data,data,data,data,data,data,data,data,data data,data,data,data,data,data,data,data,data,data,data,data,data,data,data,data data,data,data,data,data,data,data,data,data,data,data,data,data,datalongdatadatalongdatadatalongdatadatalongdata,data,data
After (Look at line 5 for
data'data
)data,data,datalongdatadatalongdata,datalongdata,datalongdata,data,data,data,datalongdata,data,data,data,data,datalongdata,datalongdata ,data data,data,data ,data ,data ,data,data,data,data ,data,data,data,data,data ,data ,data data,data,data ,data ,data ,data,data,data,data ,data,data,data,data,data ,data ,data data,data,data ,data ,data ,data,data,data,data ,data,data,data,data,data ,datalongdatadatalongdatadatalongdatadatalongdatadatalongdata,data data,data,data ,data ,data ,data,data,data,data'data,data,data,data,data,data,data,data data,data,data ,data ,data ,data,data,data,data,data,data,data,data,data,data,data data,data,data ,data ,data ,data,data,data,data,data,data,data,data,data,data,data data,data,data ,data ,data ,data,data,data,data,data,data,data,data,datalongdatadatalongdatadatalongdatadatalongdata,data,data
解决方案I'm back with a new answer :) After you found that bug in
TextFX
, I decided to create something better using thePython Script
plugin.Examples
It will convert the following example:
heeey,this,is,a,testtttttttttt 34,3 123,123,123,123,123
To:
+ ----------------------------------------- + | heeey | this | is | a | testtttttttttt | | 34 | 3 | | | | | 123 | 123 | 123 | 123 | 123 | + ----------------------------------------- +
And the following:
title1,title2,title3,title4,title5,title6,title7,title8,title9 datalongdata,datalongdata,data,data,data,datalongdata,data,data,data data,data,data,data,data,data,data,datalongdatadatalongdatadatalongdatadatalongdatadatalongdata,data data,data'data,data,data,data,data,data,data,data
To:
+ ------------------------------------------------------------------------------------------------------------------------------------------------------ + | title1 | title2 | title3 | title4 | title5 | title6 | title7 | title8 | title9 | + ------------------------------------------------------------------------------------------------------------------------------------------------------ + | datalongdata | datalongdata | data | data | data | datalongdata | data | data | data | | data | data | data | data | data | data | data | datalongdatadatalongdatadatalongdatadatalongdatadatalongdata | data | | data | data'data | data | data | data | data | data | data | data | + ------------------------------------------------------------------------------------------------------------------------------------------------------ +
Installation
- Install
Python Script
plugin, fromPlugin Manager
or from the official website. - When installed, go to
Plugins > Python Script > New Script
. Choose a filename for your new file (egpretty_csv.py
) and copy the code that follows. - Open your csv file and then run
Plugins > Python Script > Scripts > pretty_csv.py
. this will open a new tab with your table.
Please note that in the first few lines of the script you can alter some parameters. I hope that the variables names are self-explanatory! I guess the most important ones are the boolean ones,
border
andheader
.#define parameters delimiter="," new_delimiter=" | " border=True border_vertical_left="| " border_vertical_right=" |" border_horizontal="-" border_corner_tl="+ " border_corner_tr=" +" border_corner_bl="+ " border_corner_br=" +" header=True border_header_separator="-" border_header_left="+ " border_header_right=" +" newline="\n" #load csv content=editor.getText() content=content.rstrip(newline) rows=content.split(newline) #find the max number of columns (so having rows with different number of columns is no problem) max_columns=max([row.count(delimiter) for row in rows]) if max_columns>0: max_columns=max_columns+1 #find the max width of each column column_max_width=[0]*max_columns for row in rows: for index,column in enumerate(row.split(delimiter)): width=len(column) if width>column_max_width[index]: column_max_width[index]=width total_length=sum(column_max_width)+len(new_delimiter)*(max_columns-1) #create new document notepad.new() #apply the changes left=border_vertical_left if border is True else "" right=border_vertical_right if border is True else "" left_header=border_header_left if border is True else "" right_header=border_header_right if border is True else "" for row_number,row in enumerate(rows): columns=row.split(delimiter) max_index=len(columns)-1 for index in range(max_columns): if index>max_index: columns.append(' ' * column_max_width[index]) else: diff=column_max_width[index]-len(columns[index]) columns[index]=columns[index] + ' ' * diff if row_number==0 and border is True: #draw top border editor.addText(border_corner_tl + border_horizontal * total_length + border_corner_tr + newline) editor.addText(left + new_delimiter.join(columns) + right + newline) #print the new row if row_number==0 and header is True: #draw header's separator editor.addText(left_header + border_header_separator * total_length + right_header + newline) if row_number==len(rows)-1 and border is True: #draw bottom border editor.addText(border_corner_bl + border_horizontal * total_length + border_corner_br) else: console.clear() console.show() console.writeError("No \"%s\" delimiter found!" % delimiter)
If you find any bugs or have any suggestions please let me know!
这篇关于视觉CSV读取器什么不保持文件“打开”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!