Python PySimpleGUI处理用户所选文件夹中的文件
我正在使用pyinstaller编译代码。它成功地创建了可执行文件,我能够运行它。按“进程”时,脚本失败并退出 我想这是因为我使用了以下方法。我想要的是用户浏览到他们电脑上的任何文件夹,并在该文件夹中的每个PDF文件上运行代码。有人能帮我吗?谢谢大家!Python PySimpleGUI处理用户所选文件夹中的文件,python,pysimplegui,Python,Pysimplegui,我正在使用pyinstaller编译代码。它成功地创建了可执行文件,我能够运行它。按“进程”时,脚本失败并退出 我想这是因为我使用了以下方法。我想要的是用户浏览到他们电脑上的任何文件夹,并在该文件夹中的每个PDF文件上运行代码。有人能帮我吗?谢谢大家! for filename in glob.glob(os.path.join(path, '*.pdf')): with open(filename,'rb') as f: 此处为虚拟代码: import PySimp
for filename in glob.glob(os.path.join(path, '*.pdf')):
with open(filename,'rb') as f:
此处为虚拟代码:
import PySimpleGUI as sg
import os
sg.theme('Black')
layout = [
[sg.Text('My Program', font=("Calibri", 14))],
[sg.Text(' ')],
[sg.Text('Browse to folder: ')],
[sg.Input(size=(70,1), key='input')],
[sg.FolderBrowse (key='folderbrowse')],
[sg.Text(' ')],
[sg.Button('Submit',bind_return_key=True)],
[sg.Text('Files Selected:')],
[sg.Output(size=(75,5),key='inputbox')],
[sg.Text(' ')]]
window = sg.Window('my project', resizable=True).Layout(layout)
while True:
event, values = window.Read()
if event in (None, 'Exit'):
break
if event == 'Submit':
foldername = values['folderbrowse'] or '.'
filenames = os.listdir(foldername)
# it uses `key='files'` to access `Multiline` widget
window['inputbox'].update("\n".join(filenames))
elif event == 'Process':
for filename in glob.glob(os.path.join(path, '*.pdf')):
with open(filename,'rb') as f:
pdf = f.read()
#rest of code here
首先在console/terminal/cmd.exe中运行代码以查看错误消息。您还可以使用
print()
在运行变量时查看变量中的值。如果没有更多信息,就没有解决方案,因为问题可能与您预期的不同。请在终端中运行代码,并使用anaconda提示符,但程序运行正常,没有错误!我可以尝试的任何其他方法>您可以使用print()
查看变量中的值以及执行代码的哪一部分-即print(事件,值)
,rint(“我在事件处理中”)
,print(glob.glob(…)
。这被称为“打印调试”。或者学习如何使用real Debugger。您使用变量path
,但我看不出您在哪里定义它。您使用eventProcess
,但我看不出哪个对象可以生成此事件,所以可能它从未执行过。如果您减少了问题代码,那么请检查它是否仍然可以运行。谢谢!所以这一次我最终得到了一个错误,说我需要导入openpyxl-虽然我的代码没有使用它,但我认为它需要它来将pandas数据框转换为excel,通常这是直接通过pandas完成的,但一旦我添加了它,它就开始工作了!谢谢-我以前从未遇到过这个问题,因此如果没有错误,我不会意识到!