Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySimpleGUI处理用户所选文件夹中的文件_Python_Pysimplegui - Fatal编程技术网

Python PySimpleGUI处理用户所选文件夹中的文件

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

我正在使用pyinstaller编译代码。它成功地创建了可执行文件,我能够运行它。按“进程”时,脚本失败并退出

我想这是因为我使用了以下方法。我想要的是用户浏览到他们电脑上的任何文件夹,并在该文件夹中的每个PDF文件上运行代码。有人能帮我吗?谢谢大家!

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
,但我看不出您在哪里定义它。您使用event
Process
,但我看不出哪个对象可以生成此事件,所以可能它从未执行过。如果您减少了问题代码,那么请检查它是否仍然可以运行。谢谢!所以这一次我最终得到了一个错误,说我需要导入openpyxl-虽然我的代码没有使用它,但我认为它需要它来将pandas数据框转换为excel,通常这是直接通过pandas完成的,但一旦我添加了它,它就开始工作了!谢谢-我以前从未遇到过这个问题,因此如果没有错误,我不会意识到!