【问题标题】:How does python access the file from a right click on Windowspython如何通过右键单击Windows访问文件
【发布时间】: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列表中的内容,我相信文件名将是条目之一。

标签: python windows io


【解决方案1】:

感谢上面的 martineau 提供的指针。以下使其工作:

file = sys.argv[1]
with open(file, 'rt', newline='', encoding='utf8') as csvfile:
    # do stuff
# write xslx_filename

我仍然不确定这是否是“正确”的做法,但它有效,所以我很高兴。

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多