通过 windows 中的右键单击 'Open With' 上下文菜单将文件传递到 Python,然后在另一个程序中打开
Pass a file to Python via the Right-Click 'Open With' context menu in windows, to then open in another program
我使用了一个软件,当您关闭时,它会保存您当前的配置,但是,下次我通过单击与其关联的文件打开该软件时,它会尝试 运行 该文件通过相同的配置,我不想要。因此,我创建了一个 python 脚本来首先打开该程序的应用程序数据,将配置重置为默认值,然后再次打开该程序。
如果我只是尝试在没有文件的情况下加载程序,这工作正常,但我希望能够单击与该程序关联的文件(通常我只需双击该文件即可打开它程序),然后使用windows中的'open with'函数来select我的脚本,然后在我的脚本清除了最后的配置后在程序中打开文件。
目前,如果我这样做,它会清除配置并打开程序,但不会加载任何文件。
本质上我是在问如何将文件传递给 python,然后让 python 将该文件传递给第三方应用程序。
我正在使用 'os.startfile('link to .exe') 函数打开程序,但是如何通过 argument/string 将文件路径作为 python单击文件并使用我的脚本打开它?
path = 'path/to/file/selected' # passed to python from selecting the file in windows explorer before starting script
# execute some code
os.startfile('path')
我在 python 方面有点初学者,所以任何帮助将不胜感激!
在 windows 10
上使用 python 3.6
您可以使用 sys.argv
访问传递给脚本的命令行参数。只要您想将这些参数传递给某些第三方应用程序(这是一个可执行二进制文件),您就应该使用 subprocess
模块,因为 os.startfile
意味着启动一个文件及其关联的应用程序。
import sys
import subprocess
def main():
if len(sys.argv) == 1:
path = sys.argv[0]
subprocess.run(['/path/to/my.exe', path])
else:
print('Usage myscript.py <path>')
if __name__ == "__main__":
main()
如果我正确理解你的问题,可以通过以下方式完成,依赖于 subprocess 模块:
subprocess.Popen(["/path/to/application", "/path/to/file/to/open"])
有关详细信息,请参阅 documentation。
我使用了一个软件,当您关闭时,它会保存您当前的配置,但是,下次我通过单击与其关联的文件打开该软件时,它会尝试 运行 该文件通过相同的配置,我不想要。因此,我创建了一个 python 脚本来首先打开该程序的应用程序数据,将配置重置为默认值,然后再次打开该程序。
如果我只是尝试在没有文件的情况下加载程序,这工作正常,但我希望能够单击与该程序关联的文件(通常我只需双击该文件即可打开它程序),然后使用windows中的'open with'函数来select我的脚本,然后在我的脚本清除了最后的配置后在程序中打开文件。 目前,如果我这样做,它会清除配置并打开程序,但不会加载任何文件。
本质上我是在问如何将文件传递给 python,然后让 python 将该文件传递给第三方应用程序。
我正在使用 'os.startfile('link to .exe') 函数打开程序,但是如何通过 argument/string 将文件路径作为 python单击文件并使用我的脚本打开它?
path = 'path/to/file/selected' # passed to python from selecting the file in windows explorer before starting script
# execute some code
os.startfile('path')
我在 python 方面有点初学者,所以任何帮助将不胜感激!
在 windows 10
上使用 python 3.6您可以使用 sys.argv
访问传递给脚本的命令行参数。只要您想将这些参数传递给某些第三方应用程序(这是一个可执行二进制文件),您就应该使用 subprocess
模块,因为 os.startfile
意味着启动一个文件及其关联的应用程序。
import sys
import subprocess
def main():
if len(sys.argv) == 1:
path = sys.argv[0]
subprocess.run(['/path/to/my.exe', path])
else:
print('Usage myscript.py <path>')
if __name__ == "__main__":
main()
如果我正确理解你的问题,可以通过以下方式完成,依赖于 subprocess 模块:
subprocess.Popen(["/path/to/application", "/path/to/file/to/open"])
有关详细信息,请参阅 documentation。