我想在我的Python控制台应用程序中获取文件路径作为输入.
目前我只能在控制台中询问完整路径作为输入.
有没有办法触发一个简单的用户界面,用户可以选择文件而不是输入完整路径?
我正在创建一个带有浏览按钮的GUI,我只想返回路径.我一直在寻找使用如下代码的解决方案.
Tkinter.Button(subframe, text = "Browse", command = self.loadtemplate, width = 10).pack()
def loadtemplate(self):
filename = tkFileDialog.askopenfilename(filetypes = (("Template files", "*.tplate")
,("HTML files", "*.html;*.htm")
,("All files", "*.*") ))
if filename:
try:
self.settings["template"].set(filename)
except:
tkMessageBox.showerror("Open Source File", "Failed to read file \n'%s'"%filename)
Run Code Online (Sandbox Code Playgroud)
但是我知道Tkinter有一个内置的,askopenfilename这是一个非常简单的一行代码来打开文件.有没有办法修改它来返回目录而不是文件?是否有比我发布的更大代码块更小的选项?
我主要在Spyder工作,构建需要弹出文件夹或文件浏览窗口的脚本.
下面的代码在spyder中完美运行.在Pycharm,askopenfilename运作良好,而askdirectory什么都不做(卡住).但是,如果在调试模式下运行 - 脚本运行良好.我试图从SAS jsl运行脚本 - 同样的问题.
任何想法我该怎么办?Python 3.6 Pycharm 2017.2
谢谢.
我使用的准则包括:
import clr #pythonnet 2.3.0
import os
import tkinter as tk
from tkinter.filedialog import (askdirectory,askopenfilename)
root = tk.Tk()
root.withdraw()
PPath=askdirectory(title="Please select your installation folder location", initialdir=r"C:\Program Files\\")
t="Please select jdk file"
if os.path.exists(os.path.expanduser('~\Documents')):
FFile = askopenfilename(filetypes=(("jdk file", "*.jdk"),("All Files", "*.*")),title=t, initialdir=os.path.expanduser('~\Documents'))
else:
FFile= askopenfilename(filetypes=(("jdk file", "*.jdk"),("All Files", "*.*")),title=t)
sys.path.append(marsDllPath)
a = clr.AddReference('MatlabFunctions')
aObj = a.CreateInstance('Example.MatlabFunctions.MatLabFunctions')
Run Code Online (Sandbox Code Playgroud)
编辑:似乎与pythonnet"imoprt clr"相关的问题,但我确实在代码中需要它.
我有一个脚本,需要要求用户选择包含两个子文件夹的文件夹,其中每个子文件夹都包含需要读取的文件。有点给出他们的目录。
我正在考虑一个弹出窗口,让他们选择文件夹。应该tkinter可以做到这一点,但我无法使其发挥作用。也许如果用户将脚本文件放在包含文件的子文件夹所在的特定文件夹中,那么搜索该文件夹会更容易?如果能让用户尽可能地简单就好了。
该模块中的更改使其难以使用。你怎么认为?
from tkinter.filedialog import askdirectory
path=askdirectory()
Run Code Online (Sandbox Code Playgroud)
我也在评论建议的地方执行了此操作,但它继续运行并且没有发生任何事情:
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
Run Code Online (Sandbox Code Playgroud) 我正在尝试弄清楚如何在我的 django 应用程序中下载使用 python-docx 生成的 Word 文档(我仍在学习,这是我第一次使用文档);在ajax的帮助下,我将所需的所有信息发送到视图并调用使用该信息并返回文档的函数,然后我尝试将此文档作为响应发送,以便在“下载”的帮助下下载它”按钮(或显示网络浏览器下载对话框)在我提交数据的同一模板中,但这就是我陷入困境的地方。
发送此文档作为响应,以便在我提交数据的同一模板中的“下载”按钮(或显示网络浏览器下载对话框)的帮助下下载它,但这就是我陷入困境的地方。
到目前为止我所拥有的是:
1)在javascript中我发送的信息如下:
Run Code Online (Sandbox Code Playgroud)data = { categoria: cat, familia: fam, Gcas: gcas, FI: FI, FF: FF, Test: test, Grafica: grafica }, $.ajax({ type: 'post', headers: { "X-CSRFToken": csrftoken }, url: url, data: { json_data: JSON.stringify(data) }, success: function (response) { $('#instrucciones').hide(); //Hide a div with a message $('#btndesc').show(); //Show the button to download the file generated } }); return false; }
2)在我的Django视图中:
Run Code Online (Sandbox Code Playgroud)def Documento(request): if request.method == "GET": context={} context['form'] = catForm return …
python ×5
tkinter ×3
.net ×1
button ×1
dialog ×1
directory ×1
django ×1
filechooser ×1
httpresponse ×1
javascript ×1
python-2.x ×1
python-docx ×1
python.net ×1
tk-toolkit ×1