带有TKINTER的加载文件返回IO错误

发布于 2025-01-21 11:23:46 字数 968 浏览 0 评论 0 原文

因此,我正在研究一种工具,该工具涉及使用十六进制数据保存文件。 我想发生的是您保存文件,并用存储的十六进制数据覆盖该文件。但是,我会遇到一个错误的错误:

TypeError: expected str, bytes or os.PathLike object, not _io.TextIOWrapper

我正在使用tkinter的 asksaveasfile 保存文件,但其类被加载为< class'_io.textiowrapper'> ,当我希望它为< class'bytes'> 时。我该如何解决?

#Saving file
def savefile():
    filetypes = (
        ('level files', '*.level')
    )

   global content

   print(levelIcon.get()[0] + levelIcon.get()[1])

   savedFile = fd.asksaveasfile(defaultextension='.level',
                                filetypes= [('Level','.level')])
   if savedFile is None or filename is None or content is None:
       return

   print(type(savedFile))
   print(savedFile)
   print(content[1])
   with open(savedFile,"wb") as newFile:
       newFile.write(contents)
       newFile.close()

So I am working on a tool which involves saving a file with Hex data.
What I want to happen is you save the file and it overwrites that file with stored hex data. However, I get an error which reads:

TypeError: expected str, bytes or os.PathLike object, not _io.TextIOWrapper

I am using Tkinter's asksaveasfile to save the file, yet its class is loaded as <class '_io.TextIOWrapper'>, when I want it to be <class 'bytes'>. How would I solve this?

#Saving file
def savefile():
    filetypes = (
        ('level files', '*.level')
    )

   global content

   print(levelIcon.get()[0] + levelIcon.get()[1])

   savedFile = fd.asksaveasfile(defaultextension='.level',
                                filetypes= [('Level','.level')])
   if savedFile is None or filename is None or content is None:
       return

   print(type(savedFile))
   print(savedFile)
   print(content[1])
   with open(savedFile,"wb") as newFile:
       newFile.write(contents)
       newFile.close()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖心男生 2025-01-28 11:23:47

如果您检查 assaveasfile 不返回文件名。它返回打开的文件句柄。您只需要写信。

savedFile = fd.asksaveasfile( ... )
savedFile.write(contents)

If you check the documentation, you'll see that asksaveasfile does not return a filename. It returns an opened file handle. You just need to write to it.

savedFile = fd.asksaveasfile( ... )
savedFile.write(contents)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文