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

2024-10-03 09:17:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个程序,打开一个文件并对它做一些事情,我想知道是否有一种方法可以让你点击一个文件,然后在程序中打开它,而不是进入程序,点击打开,在文件中导航找到它,或者只是一种你可以点击“打开方式…”选择你的程序。下面是代码,如果有帮助的话:

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

任何帮助或建议将不胜感激。在

谢谢!在


Tags: 文件fromimport程序ostkintertfroot
3条回答

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

另一种方法是:

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

你可以想想

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

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

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

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

在安装.bat在

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

现在,您已经准备好制作并使用以下Python脚本:

示例1.pyw

^{pr2}$

示例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脚本鼠标或触摸设备。-有关详细信息,请参阅Homepage

“打开方式…”通常将文件的路径名发送到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. 使您的程序从stdin读取并写入stdout
  2. 使用外壳的力量。如果您使用unixshell,只需 cat infile | ./python myProgram.py > outfile

这将把infile的内容提供给stdin上的程序,然后将stdout的输出写入outfile。在

相关问题 更多 >