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

时间:2017-11-23 02:07:08

标签: python windows tkinter open-with

我正在创建一个打开文件的程序,并为它做了一些事情,我想知道是否有一种方法可以点击文件,它会在程序中打开它,而不是进入程序,单击打开,导航文件以查找它,或者只是一种方式,您可以单击"打开..."并选择你的程序。如果它有帮助,这是代码:

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()

任何帮助或建议都将受到高度赞赏。

谢谢!

3 个答案:

答案 0 :(得分:2)

“打开方式...”通常会将文件的路径名发送到sys.argv。因此,在程序的适当位置添加:

if len(sys.argv) > 1:
    open_file(sys.argv[1])

(正如我在评论中所说,你真的想让你的open_file接受一个论证,并有另一个功能,如open_file_dialog来打开对话框。)

这就留下了如何制作一些你可以“开放......”的问题。如果您使用的是Windows,则应该可以通过编辑注册表来实现更好的文件关联控制:有关详细信息,请参阅this MSDN page

或者,快速而简单的方法是创建一个带有参数的.bat脚本并将其传递给python程序。我记得前一段时间这样做了,但我很长时间没有认真使用Windows,所以我不能告诉你如何编写脚本。

答案 1 :(得分:1)

我是Autohotkey Tools和Python Launguages的粉丝,

另一种方法是:

如果你想运行一个程序,然后想要用文件打开它("打开...")

你可以想一想,

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

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

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

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

INSTALL.BAT

C:\Python27\scripts\pip.exe install pyautogui
pause
C:\Python27\scripts\pip.exe install pywinauto
pause

现在你准备好了,制作并使用这个Python脚本:

Example1.pyw

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

Example2.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脚本执行鼠标或触控设备的可执行图片。 - 有关详细信息,请查看Homepage

答案 2 :(得分:0)

我该怎么做:

  1. 使程序从stdin读取并写入stdout
  2. 使用shell的强大功能。如果您使用的是unix shell,只需执行操作即可 cat infile | ./python myProgram.py > outfile
  3. 这将在stdin上为您的程序提供infile的内容,然后将stdout的输出写入outfile