我正在制作一个程序,可以打开文件并为其做一些事情,我想知道是否有一种可以单击文件的方法,它会在该程序不是进入程序,单击打开并通过文件导航,或者只是您可以单击"与...打开..."并选择程序的方式。如果有帮助,这是代码:
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:SnakeinfoScripts")
print os.getcwd()
call(["pyinstaller", filenametmp])
os.remove("C:/Snake/info/Scripts/build")
f.close()
tf.close()
print "nn----------------------------------------------------------------------nnFinished compiling " + filename + ". Find the program under [filename]/[filename].exe"
openbutton = Button(root, text = "Open", width = 10, command = open_file)
openbutton.pack()
root.mainloop()
任何帮助或建议都将不胜感激。
谢谢!
"使用...打开"通常将文件的路径名发送到sys.argv
。因此,在您程序的适当位置,添加此信息:
if len(sys.argv) > 1:
open_file(sys.argv[1])
(正如我在评论中所说的那样,您真的想让您的open_file
参观,并具有open_file_dialog
之类的另一个功能来打开对话框。)
一开始就留下一个问题,即如何制作您可以"打开..."的问题。如果您在Windows上,则应该能够通过编辑注册表来通过文件关联实现更优质的控制:有关详细信息,请参见此MSDN页面。
另外,一种快速的方法是制作一个.bat
脚本,该脚本进行参数并将其传递给您的Python程序。我记得一段时间以前这样做,但是我已经很长时间没有认真使用Windows,所以我无法告诉您如何立即写下脚本。
我是Autohotkey工具和python launguages的粉丝,
另一种做法的方法是:
如果要运行程序,然后想用文件打开它("与...打开")
您可以考虑,
用键盘快捷键制作自己的计算机运动脚本。
步骤1:在Windows系统上安装(Python27)。单击此处
步骤2:然后安装Python软件包-Pyautogui和Pywinauto
您可以使用此MSDOS批处理脚本:
install.bat
C:Python27scriptspip.exe install pyautogui
pause
C:Python27scriptspip.exe install pywinauto
pause
现在您准备好制作和使用此Python脚本:
example1.pyw
#run Notepad with "Open..."
#######################
import pywinauto
pywinauto.Application().start(r"C:WindowsSystem32Notepad.exe c:testtest.txt")
#######################
example2.pyw
#run Notepad
#######################
import pywinauto
pywinauto.Application().start("C:WindowsSystem32Notepad.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命令使用文件路径 - 不能放置(单个后斜线),则必须将其替换为(double backslash \)
提示:Python语言以及AutopyThonLauncher软件是一个很好的组合 - 如果您想制作,Windows桌面上的工具栏 - 可执行的图片,带有用于鼠标或触摸设备的Python脚本。 - 有关更多信息,请查看主页
我将如何做:
- 做到这一点,以便您的程序从stdin读取并写入stdout
- 使用外壳的力量。如果您在Unix外壳中,只需做
cat infile | ./python myProgram.py > outfile
这将使您在stdin上的程序中将infile
的内容提供给您的程序,然后将STDOUT的输出写入outfile
。