开源改变世界!!

吊坠闪烁 #694

推推 grbl 2年前 (2023-02-01) 142次浏览
关闭
Guenni75 打开了这个问题 2017 年 11 月 17 日 · 8条评论
关闭

吊坠闪烁#694

Guenni75 打开了这个问题 2017 年 11 月 17 日 · 8条评论

注释

吊坠闪烁 #694
古尼75 评论了 2017 年 11 月 17 日  

你好。
我不经常使用吊坠。
昨天我在手机上打开它,慢跑按钮上下跳动。
有一张图片无法加载(我认为)。

Windows Python窗口报错:

————————————–

处理来自 (‘192.168.178.51’, 50662) 的请求时发生异常
Traceback(最近调用最后一次):
文件“C:\Python27\lib\SocketServer.py”,第 295 行,在 _handle_request_noblock
self.process_request(request, client_address )
文件“C:\Python27\lib\SocketServer.py”,第 321 行,在 process_request
self.finish_request(request, client_address)
文件“C:\Python27\lib\SocketServer.py”,第 334 行,在 finish_request
self.RequestHandlerClass 中(request, client_address, self)
文件“C:\Python27\lib\SocketServer.py”,第 655 行,在init
self.handle()
文件“C:\Python27\lib\BaseHTTPServer.py”,第 340 行,在句柄中
self.handle_one_request()
文件“C:\Python27\lib\BaseHTTPServer.py”,第 328 行,在 handle_one_request
method()
文件“D:\bCNC\bCNC-master\Pendant.py”,第 124 行,在 do_GET
Image.open(tmp.name ).save(out.name, ‘GIF’)
File “C:\Python27\lib\site-packages\PIL\Image.py”, line 1952, in open
fp = builtin .open(fp, “rb”)
IOError : [Errno 13] 权限被拒绝:’c:\users\cnc\appdata\local\temp\tmpm4tqld.ps’

我认为权限被拒绝是问题所在,但“以管理员身份运行”无法解决。

还是双\?但我认为这仅来自错误处理程序。

如果我用 chrome 删除 html 站点上的图像,一切正常。

吊坠闪烁 #694
贡献者

已在 WIn10 上确认。
它可能与操作系统处理临时文件的不同方式有关:
https ://stackoverflow.com/questions/23212435/permission-denied-to-write-to-my-temporary-file

吊坠闪烁 #694
所有者

根据 tempfile 文档,它会在默认目录中打开一个文件。您是否尝试过设置 TMP 或 TMPDIR、TMP 或 TEMP 系统环境变量,以及拥有一个用户可写的 C:\TEMP 或 C:\TMP 目录?
https://docs.python.org/2/library/tempfile.html#tempfile.tempdir

吊坠闪烁 #694
贡献者
with tempfile.NamedTemporaryFile(suffix='.ps') as tmp:
	httpd.app.canvas.postscript(
		file=tmp.name,
		colormode='color',
	)
	tmp.flush()
	with tempfile.NamedTemporaryFile(suffix='.gif') as out:
		Image.open(tmp.name).save(out.name, 'GIF')  #<< Trying to open the already open tmp file???
		out.flush()
		out.seek(0)

		self.do_HEAD(200, content="image/gif")
		self.wfile.write(out.read())

来自文档:

在指定的临时文件仍处于打开状态时,该名称是否可用于再次打开该文件,因平台而异(它可以在 Unix 上使用;它不能在 Windows NT 或更高版本上使用)。

在 Windows 中,您无法再次打开由 NamedTemporaryFile() 返回的文件。但它似乎正是代码在 Image.open 中试图做的事情。
我认为这不是特权问题。

吊坠闪烁 #694
所有者

谢谢@effer该文件已经打开并被锁定。

吊坠闪烁 #694
作者
古尼75 评论了 2017 年 11 月 19 日  

每次“闪烁”时,文件名都会更改(’c:\users\cnc\appdata\local\temp\tmpm4tqld.ps’)。
在本例中为 tmpm4tqld.ps。下一秒名字变了

吊坠闪烁 #694
作者

当我查看消息末尾的临时文件夹时:’c:\users\cnc\appdata\local\temp\tmpm4tqld.ps’ 没有以 .ps 结尾的文件。
创建文件有问题吗?

吊坠闪烁 #694
作者

问题是 NamedTemporaryFile()。
docs.python.org上提到,这不能在 Windows 下使用(自 Windows NT 起)!

吊坠闪烁 #694
所有者

我找不到合理的解决方案。因此,在出现错误的情况下,它会显示一个 warn.gif 图标以停止闪烁。