[Bug] Broken Linux symlink crashes Demo_Tree_Element.py

未关闭
#6,570 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
停滞
技术栈
python
领域
desktop

调研方向

从 Demo_Tree_Element.py 开始,重点查看第 36 行,该行在将文件插入树中时使用了 os.stat(fullname)。使用包含损坏符号链接的目录重现该问题;当 demo 不再崩溃,并且受影响的条目在树中得到可见处理时,即视为完成。

由索引模型根据 Issue 内容生成。

描述

Demo Programs
Type of Issue (Enhancement, Error, Bug, Question)

[Bug] Broken Linux symlink crashes Demo_Tree_Element.py
When running the program against a directory tree that contains a broken file symbolic link, it crashes with a "file not found" error. Python throws an exception that isn't handled:
Traceback (most recent call last):
File "Demo_Tree_Element.py", line 38, in
add_files_in_folder('', starting_path)
File "Demo_Tree_Element.py", line 34, in add_files_in_folder
add_files_in_folder(fullname, fullname)
File "Demo_Tree_Element.py", line 34, in add_files_in_folder
add_files_in_folder(fullname, fullname)
File "Demo_Tree_Element.py", line 36, in add_files_in_folder
treedata.Insert(parent, fullname, f, values=[os.stat(fullname).st_size], icon=file_icon)
FileNotFoundError: [Errno 2] No such file or directory: '/home/ran/projects/net_tools/samplicator-master/depcomp'

This was obvious when I ran it from the command line, but from the Demo Browser it just silently disappeared


Operating System

Ubuntu 20.04

PySimpleGUI Port (tkinter, Qt, Wx, Web)

print(sg)
<module 'PySimpleGUI' from '/usr/local/lib/python3.8/dist-packages/PySimpleGUI/init.py'>
(sg.version)
'4.60.5 Released 21-May-2023'


Versions

*** Version information copied to your clipboard. Paste into your GitHub Issue. ***

Python version: 3.8.10 (default, May 26 2023, 14:05:08)
[GCC 9.4.0]
port: tkinter
tkinter version: 8.6.10
PySimpleGUI version: 4.60.5
PySimpleGUI filename: /usr/local/lib/python3.8/dist-packages/PySimpleGUI/PySimpleGUI.py

Version information can be obtained by calling sg.main_get_debug_data()
Or you can print each version shown in ()

Python version (sg.sys.version)

'3.8.10 (default, May 26 2023, 14:05:08) \n[GCC 9.4.0]'

PySimpleGUI Version (sg.__version__)

'4.60.5'

GUI Version (tkinter (sg.tclversion_detailed), PySide2, WxPython, Remi)

tkinter


Your Experience In Months or Years (optional)

Years Python programming experience 2

Years Programming experience overall 54

Have used another Python GUI Framework? (tkinter, Qt, etc) (yes/no is fine)

Anything else you think would be helpful?


Troubleshooting

These items may solve your problem. Please check those you've done by changing - [ ] to - [X]

  • Searched main docs for your problem www.PySimpleGUI.org
  • Looked for Demo Programs that are similar to your goal. It is recommend you use the Demo Browser! Demos.PySimpleGUI.org
  • None of your GUI code was generated by an AI algorithm like GPT
  • If not tkinter - looked for Demo Programs for specific port
  • For non tkinter - Looked at readme for your specific port if not PySimpleGUI (Qt, WX, Remi)
  • Run your program outside of your debugger (from a command line)
  • Searched through Issues (open and closed) to see if already reported Issues.PySimpleGUI.org
  • Have upgraded to the latest release of PySimpleGUI on PyPI (lastest official version)
  • Tried using the PySimpleGUI.py file on GitHub. Your problem may have already been fixed but not released
Detailed Description

When running the program against a directory tree that contains a broken file symbolic link, it crashes with a "file not found" error. Python throws an exception that isn't handled:
Traceback (most recent call last):
File "Demo_Tree_Element.py", line 38, in
add_files_in_folder('', starting_path)
File "Demo_Tree_Element.py", line 34, in add_files_in_folder
add_files_in_folder(fullname, fullname)
File "Demo_Tree_Element.py", line 34, in add_files_in_folder
add_files_in_folder(fullname, fullname)
File "Demo_Tree_Element.py", line 36, in add_files_in_folder
treedata.Insert(parent, fullname, f, values=[os.stat(fullname).st_size], icon=file_icon)
FileNotFoundError: [Errno 2] No such file or directory: '/home/ran/projects/net_tools/samplicator-master/depcomp'

This was obvious when I ran it from the command line, but from the Demo Browser it just silently disappeared

Code To Duplicate

The Demo_Tree_Element.py file included with the package.

This pre-formatted code block is all set for you to paste in your bit of code:


# Paste your code here

To fix, replace line 36 with something like:

            try:
                treedata.Insert(parent, fullname, f, values=[os.stat(fullname).st_size], icon=file_icon)
            except:
                treedata.Insert(parent, fullname, f, values=["???? error"], icon=file_icon)

Screenshot, Sketch, or Drawing

Watcha Makin?

If you care to share something about your project, it would be awesome to hear what you're building.

主要语言
Python
星标
13.8k
派生
1.8k
PR 合并指标
30 天内没有已合并 PR

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

PySimpleGUI/PySimpleGUI 的其他 Issue

查看 PySimpleGUI/PySimpleGUI 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。