python扫描目录下文件_扫描目录和子目录中的文件

本质上,我要做的是在文件夹结构中搜索提供的发票列表的文件,并将所需的数据复制到新文件中。我的下面的脚本如前所述工作,但是脚本在包含子目录的搜索文件夹中阻塞。我需要修改脚本来扫描根文件夹及其子目录文件。我尝试过几种不同的代码更新,但似乎都不起作用:import tkinter

import os

import fnmatch

from tkinter import *

from tkinter import messagebox as tkMessageBox

from tkinter.filedialog import askopenfilename

from tkinter.filedialog import askdirectory

from pathlib import PureWindowsPath

from pathlib import Path

#filedialog

content = ''

BrowsePath = ''

SearchPath = ''

top = tkinter.Tk()

#********************************************************FIELDS****************************************************************************

#Browse entry field

Browse1 = Label(text="Search List:").grid(row=0)

BrowsePath = StringVar()

BrowsePath.set("Select File Containing Invoice Numbers")

BrowseL = Label(bd=5,textvariable=BrowsePath, width=100,relief=SUNKEN).grid(row=0,column=1)

#Search Folder

Searce1 = Label( text="Search Folder:").grid(row=1)

SearchPath = StringVar()

SearchPath.set("Select Folder to Search")

SearchL = Label(bd=5,textvariable=SearchPath, width=100,relief=SUNKEN).grid(row=1,column=1)

#OutputFile

OutputL1 = Label( text="Output File:").grid(row=2)

OutputPath = StringVar()

OutputPath.set("File to Save Results to")

OutputL2 = Label(bd=5,textvariable=OutputPath, width=100,relief=SUNKEN).grid(row=2,column=1)

#********************************************************FUNCTIONS****************************************************************************

#Process complete function

def GetCallBack():

tkMessageBox.showinfo( "Find Invoices", "Processing complete!")

#********************************************************FILE PICKERS****************************************************************************

#Select file containing list of invoices

def GetFile():

global content

global BrowsePath

filename = askopenfilename()

infile = open(filename,'r')

content = infile.read()

BrowsePath.set(os.path.realpath(filename))

return content

#Select directory containing invoice files

def SearchDir():

global content

global SearchPath

pathname = askdirectory()

SearchPath.set(os.path.realpath(pathname))

return content

#Creates the save file with isolated invoices

def SaveFile():

filename = os.path.abspath(os.path.join(SearchPath.get(),"Results.txt"))

OutputPath.set(filename) #update label with location of file

#********************************************************READING invoice LIST FILE****************************************************************************

def GetPOCount():

PO = [line.rstrip('\n') for line in open(os.path.realpath(BrowsePath.get()))] #isolates list of invoices

ponum_count = sum(1 for line in open(os.path.realpath(BrowsePath.get()))) #gets count of invoice numbers

return PO, ponum_count #can be indexed

def GetFileNames():

files = os.listdir(SearchPath.get()) #gets list of files

return files #can be indexed

def GetFileLineCount():

files = GetFileNames()

file_count = len(fnmatch.filter(os.listdir(SearchPath.get()),'*.*'))

line_count = sum(1 for line in open(os.path.realpath(os.path.join(SearchPath.get(),files[file_count-1])))) #gets count of lines in invoice file

return line_count, file_count

def FindPOs():

po_number = GetPOCount()[0]

po_counter = GetPOCount()[1]

print(po_number)

print(po_counter)

file_counter = GetFileLineCount()[1]

file_name = GetFileNames()

print(file_name)

print(file_counter)

# For each file

for filename in file_name:

print("Searching " + filename)

with open(os.path.join(SearchPath.get(),filename),'r') as content_file:

line_count = sum(1 for line in content_file) #gets count of lines in invoice file

print(line_count)

po_line = [line.rstrip('\n') for line in open(os.path.realpath(os.path.join(SearchPath.get(),filename)))] #isolates each line

result_filename = os.path.abspath(os.path.join(os.path.dirname(SearchPath.get()),"Results.txt"))

OutputPath.set(result_filename)

log = os.path.abspath(os.path.join(os.path.dirname(SearchPath.get()),"FoundInvoices.txt"))

# For each line in file

#TODO: make this for each po_line

for PONum in po_number:

print("looking for " + PONum)

for line in range (0,line_count):

#locate Header Record

if po_line[line][16:18] == "10" or po_line[line][15:17] == "10":

print("On a header record")

if PONum in po_line[line].strip():

print("Looking for " + PONum)

# Write the current line to the results file

with open(result_filename,'a+') as file:

file.write(po_line[line] + '\n')

# Write this PONum to the log file

with open(log,'a+') as logs:

logs.write(PONum + '\n')

# Loop from the next line to the end

with open(result_filename,'a+') as file:

for z in range (line+1,line_count):

if ((po_line[z][16:18] != "10") and (po_line[z] != '\n') and (po_line[z][15:17] != "10") and (po_line[z][16:18] != "05")):

file.write(po_line[z] + '\n')

else:

# Once we've found a "10" or newline, stop printing this PO

break

GetCallBack()

#********************************************************BUTTONS****************************************************************************

# Search List Browse Button logic

BrowseButton = tkinter.Button(text ="Browse", command = GetFile).grid(row=0,column = 2)

# Search Directory Button logic

SearchButton = tkinter.Button(text ="Search", command = SearchDir).grid(row=1,column = 2)

# Find POs Button Logic

FindButton = tkinter.Button( text ="Get Invoices", command = FindPOs).grid(row=4,column = 1)

top.mainloop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值