I'm going to create a project where I search all the subfolder files and make them into files The value comes out well if you print it, but when I added it to the list by append and returned the list, the values in print came out well It's not in here.
import os
from tkinter import filedialog
from tkinter import *
class FileList:
def FolderOpen(self):
window = Tk().withdraw()
dirName=filedialog.askdirectory(initialdir="/",title='Please select a directory to check.')
return dirName
def FileSave(self):
window = Tk().withdraw()
title = 'Save File'
ftypes = [('txt FIle', '.txt'), ('All files', '*')]
filename = filedialog.asksaveasfilename(filetypes=ftypes, title=title, initialfile='FileSearch.txt')
return filename
def search(self, dirname):
files = list()
try:
filenames = os.listdir(dirname)
for filename in filenames:
full_filename = os.path.join(dirname, filename)
if os.path.isdir(full_filename):
self.search(full_filename)
else:
print(full_filename)
files.append(full_filename)
return files
except PermissionError:
pass
File = FileList()
FolderFind = File.FolderOpen()
filename = File.FileSave()
file = File.search(FolderFind)
print(file)
The values of the printed and appended lists are different. I referred to Jo Coding's code.
print append python
The files appear to be initialized each time the function is executed.
If there are no other factors that affect the list, why don't you take the list out of the function?
import os
from tkinter import filedialog
from tkinter import *
files = list()
class FileList:
def FolderOpen(self):
window = Tk().withdraw()
dirName=filedialog.askdirectory(initialdir="/",title='Please select a directory to check.')
return dirName
def FileSave(self):
window = Tk().withdraw()
title = 'Save File'
ftypes = [('txt FIle', '.txt'), ('All files', '*')]
filename = filedialog.asksaveasfilename(filetypes=ftypes, title=title, initialfile='FileSearch.txt')
return filename
def search(self, dirname):
#files = list()
try:
filenames = os.listdir(dirname)
for filename in filenames:
full_filename = os.path.join(dirname, filename)
if os.path.isdir(full_filename):
self.search(full_filename)
else:
print(full_filename)
files.append(full_filename)
return files
except PermissionError:
pass
File = FileList()
FolderFind = File.FolderOpen()
filename = File.FileSave()
file = File.search(FolderFind)
print(file)
© 2024 OneMinuteCode. All rights reserved.