首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python和glob.glob工作时

Python和glob.glob工作时
EN

Stack Overflow用户
提问于 2018-06-27 07:47:56
回答 1查看 356关注 0票数 0

我是tkinter的新手,我试图打开explorer (在windows上),这样我就可以选择我想要在程序中使用的文件夹。我为tkinter找到了一个模板,并对其进行了修改,以便与我的函数一起工作,以及我如何需要filepath。在我尝试使用tkinter“选择我的文件夹”之前,我已经像这样手动地写了glob.glob函数中的目录(它起作用了)。因此,我的新ide是将来自r'C:\Users\Desktop\Spyder\*.log'的路径名输入替换为存储相同路径名的变量,但现在它使用tkinters askdirectory()来查找被整数的目录。

代码语言:javascript
复制
import glob
import os
from itertools import zip_longest
import tkinter as tk
from tkinter import filedialog

#-------------Connect to Access2013------------------ 
class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.pack()
        self.create_widgets()

    def create_widgets(self):

        self.select_folder = tk.Button(self)
        self.select_folder["text"] = "Open WindowsExplorer"
        self.select_folder["command"] = self.ask_directory_to_folder
        self.select_folder.pack(side="top")

        self.quit = tk.Button(self, text="QUIT", fg="red",
                              command=root.destroy)
        self.quit.pack(side="bottom")

    def ask_directory_to_folder(self):
        clerdatabase() # a funktion that resets the autonumber and deleats all data from every table
        print("Open!")
        filepath = filedialog.askdirectory()
        log_filepath = "r'"+ str(filepath +"/*.log'")
        right_log_filepath = log_filepath.replace('/','\ ').replace(' ','')
        find_filenames(right_log_filepath)

root = tk.Tk()
app = Application(master=root)
app.mainloop()

#--------------Scan selected folder for .log files and starts to scan files---------
def find_filenames(right_log_filepath): #finds every file in the chosen filepath

    print(right_log_filepath) # r'C:\Users\Desktop\Spyder\*.log'
    print("ok")
    filenames = [] # list for all the found filenames
    for filepath_search in glob.glob(str(right_log_filepath), recursive=True): #A for loop that opens every .log file in the chosen directory folder 
        print('run') 

我的问题是,我不能让for loop filepath_search工作(它打印"ok")。但是for循环中的单词run没有打印,我猜是因为它在那之前被卡在某个地方了?对我有帮助的更有经验的人?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 08:54:50

我猜是由传递给glob.glob的内容引起的,因为它什么都找不到。这似乎主要是因为您在'的乞讨和结束处添加了right_log_filepath字符。

ask_directory_to_folder函数中,替换:

代码语言:javascript
复制
log_filepath = "r'"+ str(filepath +"/*.log'")
right_log_filepath = log_filepath.replace('/','\ ').replace(' ','')
find_filenames(right_log_filepath)

通过以下方式:

代码语言:javascript
复制
from os import path  # should be at the top of your file
log_filepath = path.join(filepath, "*.log")
find_filenames(log_filepath)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51057280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档