【发布时间】:2019-07-17 03:50:44
【问题描述】:
我编写了一个简单的 python 脚本,它接受一个 .csv 文件,重新排列它并输出一个 excel 文件。我的目标是能够在 Windows 中右键单击 .csv 文件并让它生成一个 .xslx 文件。我已经使用 PyInstaller 成功创建了一个 .exe,并在右键单击 csv 文件时使用default programs editor 将我的可执行文件放在上下文菜单中。我不知道如何正确执行 I/O。
我拥有的是:
import fileinput
import csv
try:
csv_filename = fileinput.filename()
print(csv_filename)
except: print('no input')
with open(filename_csv, 'rt', newline='', encoding='utf8') as csvfile:
# do stuff
# write xslx_filename
这不起作用。
当我打开文件时如何访问文件窗口?
编辑: 只是为了消除混乱。如果我硬编码 csv 文件的位置,我的脚本就可以正常工作。我的问题是当我右键单击 csv 文件并选择使用 csv2xslx(我的脚本)打开时,如何访问 Windows(大概)传递给我的脚本的文件。
【问题讨论】:
-
您将需要修改 Window 注册表并将您的 .exe 作为文件处理程序之一与
.xlsx扩展名相关联,以使其出现在右键单击资源管理器上下文菜单中.您可能可以通过 Python 完成所有这些操作,但需要相当多的 Windows 专业知识(而且您可能还需要一种方法来撤消它)。 -
我认为您误解了这个问题(或者更准确地说,我表达得不好)。我对 .xslx 位没有任何问题。使用 .csv 输入的硬编码位置,我的脚本愉快地编写了一个新的 .xslx 文件(感谢 xlsxwriter)。我想不通的是如何让python读取Windows传递给上下文菜单选择的程序的任何内容。也就是说,如何使用被点击的csv文件而不是一个很难的文件编码位置。
-
是的,我误会了。当你的脚本启动时打印出
sys.argv列表中的内容,我相信文件名将是条目之一。