如何制作一个可以用文件打开的程序?(python)

如何制作一个可以用文件打开的程序?(python),python,windows,tkinter,open-with,Python,Windows,Tkinter,Open With,我正在制作一个程序来打开一个文件并对其执行一些操作,我想知道是否有一种方法可以让你点击一个文件,然后在程序中打开它,而不是进入程序,点击“打开”,然后浏览文件来找到它,或者只是一种方法,你可以点击“打开…”并选择你的程序。以下是代码(如果有帮助): from tkinter import * from tkinter import filedialog from subprocess import * import os root = Tk() root.title("Snake conver

我正在制作一个程序来打开一个文件并对其执行一些操作,我想知道是否有一种方法可以让你点击一个文件,然后在程序中打开它,而不是进入程序,点击“打开”,然后浏览文件来找到它,或者只是一种方法,你可以点击“打开…”并选择你的程序。以下是代码(如果有帮助):

from tkinter import *
from tkinter import filedialog
from subprocess import *
import os

root = Tk()
root.title("Snake converter")
def open_file():

    filename = filedialog.askopenfilename(filetypes = (("Snake files", "*.sim"),("Python Files", "*.py"),("All files", "*.*")))
    filenametmp = filename + ".tmp"
    print filename + " is being compiled. Please wait..."
    tf = open(filenametmp, "a")
    f = open(filename, "r")
    filecontents = f.read()
    tf.write("from simincmodule import *" + "\n")
    tf.write(filecontents)
    os.chdir("C:\Snake\info\Scripts")
    print os.getcwd()
    call(["pyinstaller", filenametmp])
    os.remove("C:/Snake/info/Scripts/build")
    f.close()
    tf.close()
    print "\n\n----------------------------------------------------------------------\n\nFinished compiling " + filename + ". Find the program under [filename]/[filename].exe"

openbutton = Button(root, text = "Open", width = 10, command = open_file)
openbutton.pack()

root.mainloop()
如有任何帮助或建议,将不胜感激

谢谢

我该怎么做:

  • 使其能够使您的程序从stdin读取并写入stdout
  • 利用外壳的力量。如果您在unix shell中,只需执行以下操作
    cat infle |/python myProgram.py>outfile
  • 这将把
    infle
    的内容提供给stdin上的程序,然后将stdout的输出写入
    outfile

    “打开时使用…”通常将文件的路径名发送到
    sys.argv
    。因此,在程序的适当位置添加以下内容:

    if len(sys.argv) > 1:
        open_file(sys.argv[1])
    
    (正如我在评论中所说,您确实希望让您的
    open\u文件
    获取一个参数,并使用另一个函数,如
    open\u文件对话框
    来打开对话框。)

    这就留下了一个问题:首先,如何制作一些你可以“打开…”的东西。如果您在Windows上,您应该能够通过编辑注册表来实现对文件关联的更精细控制:有关详细信息,请参阅


    或者,一种快速而肮脏的方法是制作一个
    .bat
    脚本,该脚本接受一个参数并将其传递给python程序。我记得很久以前就这样做了,但是我已经很久没有认真使用Windows了,所以我不能马上告诉你如何编写脚本。

    我是自动热键工具和Python语言的粉丝

    另一种方法是:

    如果您想运行一个程序,然后想用一个文件打开它(“用…打开”)

    你可以想想

    使用键盘快捷键宏制作自己的计算机移动脚本。

    步骤1:在Windows系统上安装(Python27)

    步骤2:然后安装Python软件包-pyautogui和pywinauto

    您可以使用此Msdos批处理脚本:

    Install.bat

    C:\Python27\scripts\pip.exe install pyautogui
    pause
    C:\Python27\scripts\pip.exe install pywinauto
    pause
    
    现在,您已经准备好制作和使用此Python脚本:

    例1.pyw

    #run Notepad with "Open..." 
    #######################
    import pywinauto
    pywinauto.Application().start(r"C:\Windows\System32\Notepad.exe c:\test\test.txt")
    #######################
    
    例2.pyw

    #run Notepad
    #######################
    import pywinauto
    pywinauto.Application().start("C:\Windows\System32\Notepad.exe")
    #######################
    
    
    #Open a File - "Open With..." 
    #######################
    import pyautogui
    import time
    time.sleep(2)
    pyautogui.hotkey('ctrl','o') #Many Programs use Shortcut Ctrl+o to "Open With..." 
    time.sleep(.750)
    pyautogui.typewrite('c:\\test\\test.txt',0)
    time.sleep(2)
    pyautogui.hotkey('enter')
    #######################
    
    # you can send any text or Keyboard Shortcuts Combinations - Example Copy - pyautogui.hotkey('ctrl', 'c')
    
    注意:如果您使用带有typewrite命令的文件路径-您不能放置(单反斜杠\),必须将其替换为(双反斜杠\)


    提示:Python语言与AutoPythonlauncher软件是一个很好的组合—如果您想在Windows桌面上制作工具栏—可执行的图片,带有用于鼠标或触摸设备的Python脚本。-有关更多信息,请查看

    您是否曾想到,如果您想以其他方式打开文件,您可能应该将
    open_file()
    分为两个函数,一个打开对话框,另一个实际打开所选文件?在Windows上,这是一项可能的任务,即使您希望以编程方式执行此操作。通过
    cmd
    中的
    assoc
    命令创建所需文件扩展名的新关联(
    assoc.tmp=
    ),然后通过
    ftype
    为其绑定命令(
    ftype=“python”“%1”“%*”
    )。显然,您可以使用
    子流程
    模块来包装这种想法。需要管理员权限。@ImpershableNight好主意!我认为OP是在问他如何将某些文件类型与他的应用程序相关联。这将涉及使用类似cx的东西将python脚本转换为可执行文件。事实上,我认为有些操作系统允许将文件类型与比应用程序更复杂的命令行相关联,例如在Windows中,您可以将
    python my_app.py“%1”
    放在注册表的适当位置,这样就可以工作了。或者,您可以使用一个批处理脚本,该脚本脏了,但仍然有效。@ImprishableNight-如果您运行批处理文件,Msdos窗口也会出现,如果您不想要第二个窗口,您可以尝试以下代码:Example3.pyw-import pywinauto pywinauto.Application().start(r“C:\Python27\Pythonw.exe C:\test\my_app.py”)ps-看看我的答案-我希望你会喜欢这个。这个建议的解决方案不完全是OP所要求的。。。他更想了解“如何配置操作系统,使其在我点击时自动打开我的文件”。不过,尽管如此,这是朝着这个方向迈出的相当合理的一步,因为上面的代码将允许OP将文件拖放到他的程序可执行文件上(假设它是可执行的)让它打开可执行文件并打开文件。@Gary02127如果您理解错误,很抱歉,但我不是这么问的。尽管如此,谢谢!