[英]WinError 32 keeps occuring when running script, even when a temporary directory is created. What am I doing wrong?
我目前正在尝试编写一个 python 脚本来创建 ArcGIS Online 图层的备份,但我一直在使用此代码和基本上我运行的任何脚本获取 WinError 32。 我之前遇到过这个问题,所以我认为创建一个临时目录会有所帮助,但问题仍然存在,我对了解目录的工作方式并不完全有信心,所以我可能只是输入了不相关的代码。 我目前使用的代码如下(另请注意,我对编码非常陌生):
# create a temporary directory since I keep getting a file in use error but this also doesnt fix it lol
import tempfile
with tempfile.TemporaryDirectory() as tmpdir:
print('created temporary directory', tmpdir)
# Import necessary modules
import arcgis
from arcgis.gis import GIS
# Create a GIS object
gis = GIS("insert_link", "username", "password")
# Get the item that represents the layer that you want to copy
layer_item = gis.content.get("layer_ID")
# Create a copy of the layer
copy_item = layer_item.copy()
# Find any old copies of the layer and delete them
for item in gis.content.search(query="title:'Copy of {}'".format(layer_item.title)):
if item.type == "Feature Layer":
item.delete()
# Save the new copy of the layer
copy_item.save()
# one day I will see this
print("File Downloaded")
这是我得到的错误:
C:\Users\SeanW\anaconda3\envs\MeganScriptTests\python.exe C:\Users\SeanW\PycharmProjects\AGOLBackup3\main.py
created temporary directory C:\Users\SeanW\AppData\Local\Temp\tmpj0yvbg64
Traceback (most recent call last):
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\importlib\_common.py", line 92, in _tempfile
os.write(fd, reader())
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\importlib\abc.py", line 371, in read_bytes
with self.open('rb') as strm:
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\importlib\_adapters.py", line 54, in open
raise ValueError()
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\SeanW\PycharmProjects\AGOLBackup3\main.py", line 7, in <module>
import arcgis
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\arcgis\__init__.py", line 3, in <module>
from arcgis.auth.tools import LazyLoader
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\arcgis\auth\__init__.py", line 1, in <module>
from .api import EsriSession
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\arcgis\auth\api.py", line 11, in <module>
certifi_win32.wincerts.verify_combined_pem()
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\certifi_win32\wincerts.py", line 65, in verify_combined_pem
with open(certifi_pem()) as certifi_pem_handle:
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\certifi_win32\wincerts.py", line 52, in certifi_pem
import certifi
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\wrapt\importer.py", line 177, in _exec_module
notify_module_loaded(module)
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\wrapt\decorators.py", line 470, in _synchronized
return wrapped(*args, **kwargs)
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\wrapt\importer.py", line 136, in notify_module_loaded
hook(module)
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\certifi_win32\wrapt_certifi.py", line 20, in apply_patches
certifi_win32.wincerts.CERTIFI_PEM = certifi.where()
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\site-packages\certifi\core.py", line 72, in where
_CACERT_PATH = str(_CACERT_CTX.__enter__())
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\contextlib.py", line 135, in __enter__
return next(self.gen)
File "C:\Users\SeanW\anaconda3\envs\MeganScriptTests\lib\importlib\_common.py", line 98, in _tempfile
_os_remove(raw_path)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\SeanW\\AppData\\Local\\Temp\\tmpx9og0v3t'
Process finished with exit code 1
我也尝试过 python 3.11,但它给了我另一个错误,它无法打开孤立路径,我在网上找不到任何相关信息。 我也在另一台计算机上尝试过这个,以防我的 python 配置错误并且发生同样的问题。 我读过它可能是 python-certifi-win32 包,但是当我尝试卸载它时出现同样的错误。 在制作临时目录后缩进代码也不能解决 winerror 32 问题。
您正在使用tempfile.TemporaryDirectory
作为上下文管理器(使用with
):
with tempfile.TemporaryDirectory() as tmpdir:
print('created temporary directory', tmpdir)
以这种方式使用时,目录会在缩进块的末尾自动删除:
在临时目录对象的上下文或销毁完成后,新创建的临时目录及其所有内容将从文件系统中删除。
无论您想在临时目录中做什么,都需要在缩进块内进行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.